【问题标题】:(Fluent) NHibernate - Mapping Varchar to Int32(Fluent) NHibernate - 将 Varchar 映射到 Int32
【发布时间】:2009-04-09 12:22:18
【问题描述】:

我们使用将整数值保存到 varchar 列的遗留数据库。我们需要将此列映射到 Int32 属性,如果数据库列中的数据是数字或 NULL,它会很好地工作。

但是如果列包含空字符串而不是 null,我们就会遇到问题 - nhibernate 会抛出无法将其转换为整数的错误。

是否可以配置类映射以自动将引发异常的所有值转换为某个默认值(在这种情况下为零)?

【问题讨论】:

    标签: nhibernate fluent-nhibernate nhibernate-mapping legacy


    【解决方案1】:

    可能可以使用拦截器转换值。您可以通过搜索“空值替换”获得一些建议。

    但是你真的有这个需求吗?您可以为 varchar 列映射一个私有或只读成员,并使用不同的属性来控制它。

    private string _varcharField;
    
    public string VarcharField
    {
        get { return _varcharField; }
    }
    
    public int IntProperty
    {
        get { [parse and return _varcharField]; }
        set { _varcharField = value.ToString(); }
    }
    

    在本例中,_varcharField 将使用访问策略映射到 NHibernate。

    【讨论】:

    • 谢谢,如果不能通过映射完成,这是我想做的事情。
    猜你喜欢
    • 2010-12-09
    • 2011-04-10
    • 1970-01-01
    • 2011-06-18
    • 2012-04-03
    • 2011-03-25
    • 1970-01-01
    • 2012-10-19
    • 2013-01-07
    相关资源
    最近更新 更多