Fluent NHibernate映射可空枚举

Fluent NHibernate映射可空枚举,nhibernate,enums,mapping,nullable,fluent,Nhibernate,Enums,Mapping,Nullable,Fluent,我需要在我的类中映射一个可为null的枚举,但却遇到异常 NHibernate.PropertyAccessException:无效强制转换(检查映射中的属性类型不匹配);App.Model.Stock的setter-->System.InvalidCastException:指定的强制转换无效 我已经将问题缩小到一个特定的属性,我将在下面描述 这是以前的回答,但解决方案链接到一个不再存在的页面 这是我的代码,我已经简化为只包含我关心的部分 public enum eColor { Re

我需要在我的类中映射一个可为null的枚举,但却遇到异常

NHibernate.PropertyAccessException:无效强制转换(检查映射中的属性类型不匹配);App.Model.Stock的setter-->System.InvalidCastException:指定的强制转换无效

我已经将问题缩小到一个特定的属性,我将在下面描述

这是以前的回答,但解决方案链接到一个不再存在的页面

这是我的代码,我已经简化为只包含我关心的部分

public enum eColor
{
    Red,
    Blue
}

public class Stock 
{
    public virtual eColor? Color { get; protected set; }
}
以下是我的映射(精简):

public class StockMap:ClassMap
{
Map(x=>x.Color).CustomType();
}
我尝试了以下所有方法,结果都是一样的:

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();
Map(x=>x.Color).CustomType();
Map(x=>x.Color).CustomType();
映射(x=>x.Color).CustomType().Nullable();
映射(x=>x.Color).CustomType().Nullable();

这似乎是一个错误很久以前,有一个解决办法。我使用的是Fluent 1.3.0.0和NHibernate 3.3.1.4000。

您应该在CustomType()中指定枚举类型,例如CustomType()。这将为您提供数据库中的整数

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();