我们使用遗留数据库,它将整数值保存到varchar列。我们需要将此列映射到Int32属性,如果数据库列中的数据是数字或NULL,则它可以正常工作。
但是如果列包含空字符串而不是null,我们就会遇到问题 - nhibernate抛出错误,它无法将其转换为整数。
是否可以将类映射配置为自动将异常引发的所有值转换为某个默认值(在本例中为零)?
答案 0 :(得分: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中映射。