我们使用将整数值保存到 varchar 列的遗留数据库。我们需要将此列映射到 Int32 属性,如果数据库列中的数据是数字或 NULL,它会很好地工作。
但是,如果列包含空字符串而不是 null,我们就会遇到问题 - nhibernate 会抛出无法将其转换为整数的错误。
是否可以配置类映射以自动将异常引发的所有值转换为某个默认值(在这种情况下为零)?
我们使用将整数值保存到 varchar 列的遗留数据库。我们需要将此列映射到 Int32 属性,如果数据库列中的数据是数字或 NULL,它会很好地工作。
但是,如果列包含空字符串而不是 null,我们就会遇到问题 - nhibernate 会抛出无法将其转换为整数的错误。
是否可以配置类映射以自动将异常引发的所有值转换为某个默认值(在这种情况下为零)?
可能可以使用拦截器转换值。您可以通过搜索“空值替换”获得一些建议。
但是你真的有这个需求吗?您可以为 varchar 列映射一个私有或只读成员,并使用不同的属性来控制它。
private string _varcharField;
public string VarcharField
{
get { return _varcharField; }
}
public int IntProperty
{
get { [parse and return _varcharField]; }
set { _varcharField = value.ToString(); }
}
在这个例子中,_varcharField 将在 NHibernate 中使用访问策略进行映射。