以前我使用了如何使用Fluent NHibernate将枚举映射为整数值?进行了映射,但最近我升级到了NHibernate 3,这个方法似乎不再适用。我在我的EnumConvention类中设置了断点,但它们没有被触发。查询正在访问数据库时,枚举被作为字符串出现,这是默认配置。
在NHibernate 3中该如何实现呢?
更新
下面是生成的一部分映射文件:
<property name="ComponentType" type="FluentNHibernate.Mapping.GenericEnumMapper`1[[...ComponentType, ..., Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], FluentNHibernate, Version=1.1.0.0, Culture=neutral, PublicKeyToken=8aa435e3cb308880">
<column name="ComponentTypeId" />
</property>
当为枚举类型指定了 IUserTypeConvention
时,使用 GenericEnumMapper
似乎不正确。
这是我的约定:
public class EnumConvention : IUserTypeConvention
{
public void Accept( IAcceptanceCriteria<IPropertyInspector> criteria )
{
criteria.Expect( e => e.Property.PropertyType.IsEnum );
}
public void Apply( IPropertyInstance instance )
{
instance.CustomType( instance.Property.PropertyType );
}
}
Map( ... ).CustomType<int>()
也不行,会引起问题。我现在尝试创建一个自定义的 IUserType,看看是否可行。 - Josh Close