整数値を 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(); }
}
この例では、アクセス戦略を使用して NHibernate で _varcharField がマップされます。