1

変更できないレガシー システム (Jet db) で 2 つのテーブルをマップしようとしています。子テーブルには、親テーブルの文字列型の列への FK があります。親テーブルの FK 列は必須ですが、多くの場合空白、つまり ' ' になります。意味がないことはわかっていますが、これは私が対処しなければならないことです。私が持っているマッピングは次のとおりです。

        References(x => x.ParentObject)
              .Formula("NOT ParentFKColumn = ' '")
              .Column("ChildFKColumn")
              .LazyLoad()
              .Nullable();  

このマッピングにより、次の例外が発生します。「読み込みコレクションへの不正なアクセス: 入力文字列 ' ' は正しい形式ではありませんでした。」エラーは十分に明らかなようです-流暢に対処する方法がわかりません。

御時間ありがとうございます。

4

1 に答える 1

1

親テーブルの文字列型の列は主キーではないと想定したため、としてマップしてproperty使用する必要がありますproperty-ref

 References(x => x.ParentObject)
          .PropertyRef("stringProperty")
          .Column("ChildFKColumn")
          .Not.LazyLoad()      // to prevent creating invalid Proxies, but property-ref should already do this
          .NotFound.Ignore(); // threat all values in the foreign key which 

.NotFound.Ignore();有効なレコードを指していない外部キーのすべての値を null として脅かすように NH に指示します。

于 2012-07-27T06:21:33.170 に答える