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(); }
}

この例では、アクセス戦略を使用して NHibernate で _varcharField がマップされます。

于 2009-04-09T17:08:07.843 に答える