nhibernate - 流利的NHibernate映射可为空的枚举

标签 nhibernate enums mapping nullable fluent

我需要在我的类(class)中映射一个可为空的枚举,但正在获取异常。

NHibernate.PropertyAccessException:无效的类型转换(检查属性类型不匹配的映射); 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。

最佳答案

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

关于nhibernate - 流利的NHibernate映射可为空的枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13881971/

相关文章:

nhibernate - 持久性规范和逆

C#:枚举值的通用列表

elasticsearch - 对于Elasticsearch中新闻标题的字段,适当的映射是什么?

java - mappedBy 指的是类名还是表名?

elasticsearch - ElasticSearch search_analyzer已应用,但未返回结果

c# - Nhibernate 中的 MySqlException

c# - Fluent Nhibernate 映射字典创建额外表

c# - DTO 和 Entity 是否都应该有输入验证

scala - Scala中的现有类型

ios - 填写表格 View 部分和单元格