There was a bug in the Not.Nullable code that I've just fixed, could you confirm (or deny) whether this has had any affect on your problem?
On Thu, Feb 19, 2009 at 12:09 AM, Steven Lyons <stevenly...@gmail.com>wrote: > > 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 -~----------~----~----~----~------~----~------~--~---