私はAddressという名前のテーブルを持つレガシーデータベースを持っています。今では2つの他のテーブルにアドレス情報が割り当てられています。元のテーブルを特定するには、SourceIDフィールドがあります。 SourceIDが1の場合は最初のテーブルに関連付けられ、2の場合は2番目のテーブルのアドレス情報になります。エンティティフレームワークの条件付きマッピング
このレガシーデータベースには、データベースに定義されている外部キー制約はなく、追加することもできません。
この関連付けを持つモデルを作成するためにEntity Frameworkを使用しているのだろうかと思います。テーブル1は、情報をアドレス指定する(SourceID = 1という条件で)第2のテーブルと同じナビゲーションを有するエンティティを有することができる。
私は条件付きマッピングを作成しようとしましたが、 "When When SourceID = 1"を設定しました。また、列マッピングが1回しかマップできないため、マッピングを削除しました。
エラー3004:行683から始まるマッピングフラグメントの問題:アドレスのプロパティAddress.SourceIDに指定されていないマッピングがありません。エンティティがタイプ[Model.Address]の場合、キー付きエンティティ(PK)はラウンドトリップしません。
ありがとうございました!
これをさらに進めたい場合はどうすればいいですか?タイプIDを定義する第2の条件がテーブルにある場合はどうなりますか? TypeId = 2という新しい条件を継承してみました。SQLプロファイラを見ると、作成するSQLに両方の条件が保持されるわけではありません。マルチレベルのTPHを使用する方法はありますか? –