0

EF Code First を使用して、既存の DB2 データベースにマップしています。これは 1 対多の関係であり、残念ながらビューを簡単に作成したり、スキーマを変更したりすることはできません。

親テーブルのスキーマには次のキーがあります。

 Type (char(1))
 ServiceDate (datetime)
 FormNumber (varchar(8))

子テーブル (詳細) には次のキーがあります

 ServiceDate (datetime) (also a foreign key to ServiceDate on the parent table)
 FormNumber (varchar(8)) (also a foreign key to ServiceDate on the parent table)
 SpecificServiceDate (datetime)
 LineNumber (varchar(8))

流暢なマッピングを使用して関係を作成したいと思います。私が行った場合:

 .HasMany(e => e.Details).HasForeignKey(e => new {e.ServiceDate, e.FormNumber});

...キーが主キーと一致しないというエラーが表示されます。これを設定する方法についてのアイデアはありますか? ありがとう。

編集

OK、EF はこれをネイティブにサポートしていません。データを遅延ロードする回避策はありますか?

違いがある場合、これは読み取り専用です。

4

1 に答える 1

1

残念ながら、それは不可能です。EF のリレーションには、データベースと同じルールがあります。親テーブルの主キーに 3 つの列がある場合、従属テーブルにも同じ 3 つの列が外部キーに含まれている必要があります。

DB2でそのような関係をマークせずに一意のキーとして定義できるかどうかはわかりませんServiceDateFormNumberそのような場合、PKにも含める理由はありませんType)が、青写真であるSQLサーバーでそれを定義することは絶対にできませんEF用。とにかく、EF は現在、関係を形成するための一意のキーをサポートしていません。

于 2012-04-21T18:35:11.170 に答える