Conventions are applied to everything, there's no difference between ClassMap and AutoMappings in that regard.
You shouldn't be getting a null Property, that seems like a bug. Can you recreate it in a failing test? On Tue, Jan 26, 2010 at 6:41 PM, Chris F <[email protected]> wrote: > Hi, > > I'm on S#arp Arch 1.0 RTM, trying to upgrade to 2009Q3 release. I've > been having issues with the change to FNH 1.0 RTM. The various changes > to mappings have made my app break. > > Here is one of the several issues I'm trying to solve (that may be > related / cascading): > > I have: > public class User > { > public virtual Guid UserId { get; protected set; } > public virtual string UserName { get; protected set; } > } > > It represents the aspnet_Users table with only the relevant columns to > be mapped. This is the only entity that was not being automapped in my > pre-upgrade setup using: > > public class UserMap : ClassMap<User> > { > public UserMap() > { > Id(x => x.UserId); > Map(x => x.UserName); > WithTable("aspnet_Users"); > } > } > > Everything else was getting automapped with some overrides to handle a > Money component, and JoinedSubclasses (these are separate upgrade > issues I'm dealing with, but one thing at a time here). > > This used to be my PrimaryKeyConvention: > public class PrimaryKeyConvention : IIdConvention > { > public bool Accept(IIdentityPart id) { return true; } > > public void Apply(IIdentityPart id) > { > id.ColumnName(id.Property.ReflectedType.Name + "Id") > .WithUnsavedValue(System.Guid.Empty) > .GeneratedBy.GuidComb(); > } > } > > And my TableNameConvention: > public class TableNameConvention : IClassConvention > { > public bool Accept(IClassMap classMap) { return true; } > > public void Apply(IClassMap classMap) > { > if (classMap.GetType() == typeof(UserMap)) > classMap.WithTable("aspnet_Users"); // This is how I side- > stepped the aspnet table > else > classMap.WithTable(Inflector.Net.Inflector.Pluralize > (classMap.EntityType.Name)); > } > } > > Now I'm having issues with the required changes to work with FNH 1.0. > The Mapping process fails right after executing the ClassMap code > (which comes before all automapping), followed by the TableName > convention code, followed by the PrimaryKeyConvention code. Here is > the new code: > > public class PrimaryKeyConvention : IIdConvention > { > public void Apply(IIdentityInstance instance) > { > instance.Column(instance.Property.ReflectedType.Name + "Id"); > instance.UnsavedValue(System.Guid.Empty.ToString()); > instance.GeneratedBy.GuidComb(); > } > } > > public class TableNameConvention : IClassConvention > { > public void Apply(IClassInstance instance) > { > instance.Table(Inflector.Net.Inflector.Pluralize > (instance.EntityType.Name)); > } > } > > The failure is in PrimaryKeyConvention because instance.Property is > null. I tried to do an if(instance.Property != null) but that > terminates the mapping process early with a "the required attribute > 'class' is missing" error. I also had an if (instance.EntityType != > typeof(User)) in the TableNameConvention, but took out when it was > making no difference. > > What is going on here? First of all, why is the AutoMapping processes > calling the conventions for the ClassMap? Second, why is the > PrimaryKenConvention getting passed an instance.Property == null? > > Thanks (and sorry for the long post). > > - Chris F. > > -- > 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]<fluent-nhibernate%[email protected]> > . > For more options, visit this group at > http://groups.google.com/group/fluent-nhibernate?hl=en. > > -- 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.
