我有一个约定UserTypeConvention<MyUserType>
其中MyUserType : IUserType
其中MyUserType
处理枚举类型MyEnum
。我已经配置功能NHibernate正是如此为什么流利NHibernate忽略我的约定?
sessionFactory = Fluently
.Configure()
.Database(MsSqlConfiguration.MsSql2005.ConnectionString(
c => c.Is(connectionString))
)
.Mappings(
m => m
.FluentMappings
.AddFromAssemblyOf<A>()
.Conventions
.AddFromAssemblyOf<A>()
)
.BuildSessionFactory();
其中A
是在相同的组件和UserTypeConvention<MyUserType>
一个MyUserType
类型。但是,Fluent NHibernate不会将MyUserType
应用于我的域对象上的MyEnum
类型的属性。相反,它将FluentNHibernate.Mapping.GenericEnumMapper<MyEnumType>
应用于这些属性。
这是怎么回事?
如果你调试它,你的惯例会被击中吗?它是“公共”吗? – 2010-10-07 11:45:47
@詹姆斯格雷戈里:我的约定是'公开'。我覆盖'UserTypeConvention。接受'看它是否被调用。我学到的是它被调用,但是当我的代码达到那个时候,Fluent NHibernate已经将'GenericEnumMapper '应用于所讨论的属性,因此标准'x => x.Type == typeof(MyEnum )''失败,因为'x.Type'是'FluentNHibernate.Mapping.GenericEnumMapper '。 –
jason
2010-10-07 12:37:05
@詹姆斯格雷戈里:这是一个小的VS 2010解决方案,其中包含一个复制问题的失败测试:http://j.mp/bu7wQB – jason 2010-10-08 07:44:01