我有一個約定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