1

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

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

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

4

1 回答 1

2

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

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

private string _varcharField;

public string VarcharField
{
    get { return _varcharField; }
}

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

在这个例子中,_varcharField 将在 NHibernate 中使用访问策略进行映射。

于 2009-04-09T17:08:07.843 回答