very cool,

thanks for that, it works great

On Aug 19, 12:07 am, James Gregory <[email protected]> wrote:
> Hey Scott,
> Got around to having a proper look at this tonight. Basically, it is down to
> the AutoImport stuff the exception mentioned; when NHibernate is given the
> first mapping it sees that the entity is named with the full assembly
> qualified name and creates an import for the short name (being helpful!),
> and then when you add the second one it then complains that this import is
> now going to conflict. So the solution is to turn off the auto importing;
> unfortunately, we don't have a way to do that in the RC... I've just
> commited a fix that adds in the ability to change this in a convention.
>
> So if you get the latest binaries or source, you should be able to
> change your Conventions line in your attached project to do this:
>
> .Conventions.Setup(x =>
> {
>   x.AddFromAssemblyOf<Program>();
>   x.Add(AutoImport.Never());
>
> });
>
> Which
> adds all the conventions you've defined in your assembly, then uses
> one of the helper conventions to turn off auto importing.
>
> On Tue, Aug 18, 2009 at 6:03 PM, Scott Cowan <[email protected]
>
>
>
> > wrote:
>
> > Here's a solution showing the repro on this, (Download link is at the
> > bottom right)
>
> >http://www.2shared.com/file/7249183/7b1df86d/DuplicateMappingExceptio...
>
> > On Aug 18, 1:03 pm, James Gregory <[email protected]> wrote:
> > > Hmm. From what I can gather from the exception, there's something that is
> > > referring to your class as just Test, rather than by the fully qualified
> > > name. Should just be a case of finding the place where this is happening,
> > > it's more than likely one of the other parts. A test or example project
> > > would probably help a lot.
>
> > > On Tue, Aug 18, 2009 at 12:55 PM, Scott Cowan <
>
> > > [email protected]> wrote:
>
> > > > sure here's the exception, I can create a solution with it reproduced
> > > > if that helps
>
> > > > FluentNHibernate.Cfg.FluentConfigurationException was unhandled
> > > >  Message="An invalid or incomplete configuration was used while
> > > > creating a SessionFactory. Check PotentialReasons collection, and
> > > > InnerException for more detail.\r\n\r\n"
> > > >  Source="FluentNHibernate"
> > > >  StackTrace:
> > > >       at FluentNHibernate.Cfg.FluentConfiguration.BuildConfiguration
> > > > () in c:\Documents and Settings\Administrator\dev\fluent-nhibernate\src
> > > > \FluentNHibernate\Cfg\FluentConfiguration.cs:line 121
> > > >       at importer.nba.svc.Program.Main(String[] args) in C:\code
> > > > \sportinginsider\datamining\misc\TempImporter\trunk\src
> > > > \nba.importer.svc\Program.cs:line 24
> > > >       at System.AppDomain._nExecuteAssembly(Assembly assembly, String
> > > > [] args)
> > > >       at
> > > > Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
> > > >       at System.Threading.ExecutionContext.Run(ExecutionContext
> > > > executionContext, ContextCallback callback, Object state)
> > > >       at System.Threading.ThreadHelper.ThreadStart()
> > > >  InnerException: NHibernate.MappingException
> > > >       Message="Could not compile the mapping document: (XmlDocument)"
> > > >       Source="NHibernate"
> > > >       StackTrace:
> > > >            at NHibernate.Cfg.Configuration.LogAndThrow(Exception
> > > > exception)
> > > >            at NHibernate.Cfg.Configuration.AddValidatedDocument
> > > > (NamedXmlDocument doc)
> > > >            at NHibernate.Cfg.Configuration.ProcessMappingsQueue()
> > > >            at NHibernate.Cfg.Configuration.AddDocumentThroughQueue
> > > > (NamedXmlDocument document)
> > > >            at NHibernate.Cfg.Configuration.AddXmlReader(XmlReader
> > > > hbmReader, String name)
> > > >            at NHibernate.Cfg.Configuration.AddInputStream(Stream
> > > > xmlInputStream, String name)
> > > >            at NHibernate.Cfg.Configuration.AddDocument(XmlDocument
> > > > doc, String name)
> > > >            at NHibernate.Cfg.Configuration.AddDocument(XmlDocument
> > > > doc)
> > > >            at FluentNHibernate.PersistenceModel.Configure
> > > > (Configuration cfg) in c:\Documents and Settings\Administrator\dev
> > > > \fluent-nhibernate\src\FluentNHibernate\PersistenceModel.cs:line 203
> > > >            at
> > > > FluentNHibernate.Automapping.AutoPersistenceModel.Configure
> > > > (Configuration configuration) in c:\Documents and Settings
> > > > \Administrator\dev\fluent-nhibernate\src\FluentNHibernate\Automapping
> > > > \AutoPersistenceModel.cs:line 125
> > > >            at FluentNHibernate.Cfg.AutoMappingsContainer.Apply
> > > > (Configuration cfg) in c:\Documents and Settings\Administrator\dev
> > > > \fluent-nhibernate\src\FluentNHibernate\Cfg
> > > > \AutoMappingsContainer.cs:line 64
> > > >            at FluentNHibernate.Cfg.MappingConfiguration.Apply
> > > > (Configuration cfg) in c:\Documents and Settings\Administrator\dev
> > > > \fluent-nhibernate\src\FluentNHibernate\Cfg
> > > > \MappingConfiguration.cs:line 65
> > > >            at
> > > > FluentNHibernate.Cfg.FluentConfiguration.BuildConfiguration() in c:
> > > > \Documents and Settings\Administrator\dev\fluent-nhibernate\src
> > > > \FluentNHibernate\Cfg\FluentConfiguration.cs:line 112
> > > >       InnerException: NHibernate.DuplicateMappingException
> > > >            Message="duplicate import: Test refers to both
> > > > Sample.Models.Test2.Test, importer.nba.svc, Version=1.0.0.0,
> > > > Culture=neutral, PublicKeyToken=null and Sample.Models.Test1.Test,
> > > > importer.nba.svc, Version=1.0.0.0, Culture=neutral,
> > > > PublicKeyToken=null (try using auto-import=\"false\")"
> > > >            Source="NHibernate"
> > > >            Name="Test"
> > > >            Type="import"
> > > >            StackTrace:
> > > >                 at NHibernate.Cfg.Mappings.AddImport(String
> > > > className, String rename)
> > > >                 at
>
> > NHibernate.Cfg.XmlHbmBinding.ClassBinder.BindPersistentClassCommonValues
> > > > (XmlNode node, IDecoratable classMapping, PersistentClass model,
> > > > IDictionary`2 inheritedMetas)
> > > >                 at NHibernate.Cfg.XmlHbmBinding.ClassBinder.BindClass
> > > > (XmlNode node, IDecoratable classMapping, PersistentClass model,
> > > > IDictionary`2 inheritedMetas)
> > > >                 at NHibernate.Cfg.XmlHbmBinding.RootClassBinder.Bind
> > > > (XmlNode node, HbmClass classSchema, IDictionary`2 inheritedMetas)
> > > >                 at
> > > > NHibernate.Cfg.XmlHbmBinding.MappingRootBinder.AddRootClasses(XmlNode
> > > > parentNode, IDictionary`2 inheritedMetas)
> > > >                 at NHibernate.Cfg.XmlHbmBinding.MappingRootBinder.Bind
> > > > (XmlNode node)
> > > >                 at NHibernate.Cfg.Configuration.AddValidatedDocument
> > > > (NamedXmlDocument doc)
> > > >            InnerException:
>
> > > > On Aug 18, 9:14 am, James Gregory <[email protected]> wrote:
> > > > > Looks ok to me mapping wise, I've checked the code and it should cope
> > > > with
> > > > > classes of the same name.
> > > > > Can you show the full exception?
>
> > > > > On Mon, Aug 17, 2009 at 11:00 PM, Scott Cowan <
>
> > > > > [email protected]> wrote:
>
> > > > > > Summary:
>
> > > > > > I want to save two classes of the same name and different
> > namespaces
> > > > > > with the Fluent NHibernate Automapper in RC1
>
> > > > > > Context
>
> > > > > > I'm writing having to import a lot of different objects to database
> > > > > > for testing. I'll eventually write mappers to a proper model.
>
> > > > > > I've been using code gen and Fluent NHibernate to take these DTOs
> > and
> > > > > > dump them straight to db.
>
> > > > > > the exception does say to (try using auto-import="false")
>
> > > > > > Code
>
> > > > > > public class ClassConvention : IClassConvention
> > > > > > {
> > > > > >    public void Apply(IClassInstance instance)
> > > > > >    {
> > > > > >        instance.Table(instance.EntityType.Namespace.Replace(".",
> > > > > > "_"));
> > > > > >    }
> > > > > > }
>
> > > > > > namespace Sample.Models.Test1
> > > > > > {
> > > > > >    public class Test
> > > > > >    {
> > > > > >        public virtual int Id { get; set; }
> > > > > >        public virtual string Something { get; set; }
> > > > > >    }
> > > > > > }
>
> > > > > > namespace Sample.Models.Test2
> > > > > > {
> > > > > >    public class Test
> > > > > >    {
> > > > > >        public virtual int Id { get; set; }
> > > > > >        public virtual string SomethingElse { get; set; }
> > > > > >    }
> > > > > > }
> > > > > > And here's the actual app code
>
> > > > > >            var model = AutoMap.AssemblyOf<Service1>()
> > > > > >                .Where(t => t.Namespace.StartsWith("Sample.Models"))
> > > > > >                .Conventions.AddFromAssemblyOf<Service1>();
> > > > > >            var cfg = Fluently.Configure()
> > > > > >                .Database(
> > > > > >                MySQLConfiguration.Standard.ConnectionString(
> > > > > >                    c => c.Is("database=test;server=localhost;user
> > > > > > id=root;Password=;")))
> > > > > >                .Mappings(m => m.AutoMappings.Add(model))
> > > > > >                .BuildConfiguration();
> > > > > >            new SchemaExport(cfg).Execute(false, true, false);
>
> > > > > > I'm reposting this from
>
> >http://stackoverflow.com/questions/1290466/fluent-nhibernate-duplicat.
> > > > ..
>
> > > > > > thanks
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Fluent NHibernate" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/fluent-nhibernate?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to