Hi All, I'm having a weird problem that hopefully someone might have some thoughts about.
I am trying to auto map and assign more specific constraints to a type (see User in code below). This is mostly just basic code I've gotten from blogs. When I run my test, the hbm export file is created and has the correct attributes. However, the the SchemaExport output to the console is missing the unique constraint and non-null specification. The strange part is that is if I use the hbm mappings in the BuildSessionFactory method (currently commented out) the constraints are added to the schema. It's when I try to use the auto mapping that I run into trouble. I also had this working previously (using the non- fluent configuration, see below) but that code also stopped working with the same problem when I updated to a recent FNH version. Is this something that I was doing wrong before and just happened to work? Or is this a regression? Thanks! s. ------- // Create SessionFactory UnitOfWork.SessionFactory = new NHibernateHelper().BuildSessionFactory (config, BuildSchema); // Export Schema public void BuildSchema(Configuration cfg) { new SchemaExport(cfg).Create(true, true); } // Build Session Factory public ISessionFactory BuildSessionFactory(Configuration config, Action<Configuration> configAction) { var f = FluentNHibernate.Cfg.Fluently .Configure(config) .Mappings(m => { //m.HbmMappings // .AddFromAssemblyOf<NHibernateHelper>(); m.AutoMappings.Add( AutoPersistenceModel.MapEntitiesFromAssemblyOf<IEntity> () .Where(entity => entity.Namespace.Contains ("Domain") && entity.GetProperty("Id") != null && entity.IsAbstract == false) .WithConvention(convention => { convention.IsBaseType = (type => (type == typeof(Entity<int>) || (type == typeof(Entity<Guid>)))); }) .ForTypesThatDeriveFrom<User>(map => { map.Map(p => p.Username).Unique().Not.Nullable (); }) ).ExportTo(@"c:\src\project\log\"); }) .ExposeConfiguration(configAction) .BuildSessionFactory(); return f; } <!-- hbm Export File --> <?xml version="1.0" encoding="utf-8" ?> <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" default- lazy="true" assembly="Project.Core" namespace="Project.Core.Domain"> <class name="User" table="Users" xmlns="urn:nhibernate-mapping-2.2"> <id name="Id" column="Id" type="Guid"> <generator class="guid.comb" /> </id> <property name="Username" unique="true" not-null="true" length="100" type="String"> <column name="Username" /> </property> </class> </hibernate-mapping> -- SQLite schema export: create table Users ( Id UNIQUEIDENTIFIER not null, Username TEXT, primary key (Id) ) // Previously working code public PersistenceModel BuildModel() { var model = new AutoPersistenceModel(); foreach (Assembly assembly in this.fluentAssemblies) { // Add assembly for the fluent mapping files model.addMappingsFromAssembly(assembly); // Add assembly and configuration for fluent AutoMapped classes model.AddEntityAssembly(assembly); } model.Where(entity => entity.Namespace.Contains("Domain") && entity.GetProperty("Id") != null && entity.IsAbstract == false) .WithConvention(c => { c.IsBaseType = (type => (type == typeof(Entity<int>) || (type == typeof (Entity<Guid>)))); }); // TODO: Move these out to a proper location!!! model.ForTypesThatDeriveFrom<User>(map => { map.Map(p => p.Username).WithUniqueConstraint() .CanNotBeNull(); }); return model; } --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Fluent NHibernate" group. To post to this group, send email to fluent-nhibernate@googlegroups.com To unsubscribe from this group, send email to fluent-nhibernate+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/fluent-nhibernate?hl=en -~----------~----~----~----~------~----~------~--~---