我有一个enum
(哪些值是位标志)如下:
[Flags]
public enum ItemType
{
InventoryPart = 0x1,
Service = 0x2,
Discount = 0x4,
NonInventory = 0x8,
MiscellaneousCharge = 0x10,
InventoryAssembly = 0x20,
DescriptionLine = 0x40,
All = InventoryPart | Service | Discount | NonInventory | MiscellaneousCharge | InventoryAssembly | DescriptionLine,
}
然后我有一个实体(Item
),上面有一个属性(注意:ItemType
是nullable
):
private ItemType? _itemType;
public ItemType? ItemType { get { return _itemType; } set { _itemType = value; } }
我在hbm.xml
文件中按如下方式映射此属性:
<property name="ItemType" type="Int32" column="ItemType" not-null="false" />
在数据库中,该字段是一个整数(允许为空)。
当我运行代码时,我从 NHibernate 库中得到一个异常:
无效的演员表(检查您的映射是否有属性类型不匹配);PrlSystems.AccountingLibrary.Model.Item 的设置器
注意:当此属性 ( Item.ItemType
) 不是nullable
之前的时,一切正常,使此属性nullable
导致上述异常。int
此外,对于像s、DateTime
s这样的内置类型nullable
,这些类型的类属性可以直接映射到它们的具体类型:int
、DateTime
.
我试过用这种方式映射它,但它仍然不起作用:
System.Nullable`1[[System.Int32]]
现在正确的 NHibernate 映射应该是什么?