【发布时间】:2012-12-14 15:50:56
【问题描述】:
我需要在我的班级中映射一个可为空的枚举,但我遇到了异常。
NHibernate.PropertyAccessException: Invalid Cast(检查您的映射是否有属性类型不匹配); App.Model.Stock 的 setter ---> System.InvalidCastException: 指定的强制转换无效。
我已将问题缩小到一个特定的属性,如下所述。
以前回答过here,但解决方案链接到一个不再存在的页面。
这是我的代码,我已将其简化为仅包含我关心的部分。
public enum eColor
{
Red,
Blue
}
public class Stock
{
public virtual eColor? Color { get; protected set; }
}
这是我的映射(精简):
public class StockMap : ClassMap<Stock>
{
Map(x => x.Color).CustomType<int>();
}
我已经尝试了以下所有方法,结果相同:
Map(x => x.Color).CustomType<int>();
Map(x => x.Color).CustomType<int?>();
Map(x => x.Color).CustomType<int>().Nullable();
Map(x => x.Color).CustomType<int?>().Nullable();
这似乎是很久以前的一个错误,并且有一个解决方法。我正在使用 Fluent 1.3.0.0 和 NHibernate 3.3.1.4000。
【问题讨论】:
标签: nhibernate enums mapping nullable fluent