【问题标题】:Fluent NHibernate mapping nullable enumFluent NHibernate 映射可空枚举
【发布时间】: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


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2011-07-19
      • 2011-02-10
      • 1970-01-01
      • 2011-04-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多