12

当社の大規模データベースの再設計では、データベースの複合主キーを多用しています。

パフォーマンスへの影響を忘れると、Entity Framework 4.0 でこのデータベースを操作するときに問題が発生しますか? データベース構造が変更される可能性は低く、「哲学的」な議論を求めているわけではありませんが、実際の影響は何ですか?

Jeremy Millerによると、「複合キーは、あらゆる種類のオブジェクト/リレーショナル マッピングと永続性を一般的に難しくします。」しかし、彼はその理由を本当に言いません。これは、Entity Framework 4.0 がキーを処理する方法に関連していますか?

4

2 に答える 2

13

いいえ、EF4 は複合キーを問題なくサポートしています。

問題は、代理キーと複合キーを持つテーブルです。各モデルに設定できるキーは 1 つだけです。そのキーは複数のフィールドを持つことができますが、デザイナーの観点からは 1 つしか持つことができません。xml またはコードのみのマッピングを手動で編集することについては不明です。

同じテーブルに複合キーと代理キーが必要な場合は、フィールドをキーではなく ID として設定できます。Identity ( Id ) フィールドは、ObjectContext または ObjectStateTracker では使用されませんが、インクリメントされ、問題なくクエリ可能になります。

于 2009-12-18T01:46:32.993 に答える
8

EF4とコンポジットキーに問題がありました。結合テーブルの複数のキーでコンポーネントとして使用される列はサポートされていません。

詳細については、前の質問「EntityFrameworkでの多対多の関係における複合外部キーのマッピング」を参照してください。重要なのは、両方の関係が共通のキーを使用する結合テーブル(多対多の関係を記述する)がある場合、次のようなエラーが発生することです。

エラー3021:フラグメントのマッピングに問題があります...:テーブルPageViewの次の各列は、複数の概念的なサイドプロパティにマップされます:PageView.Versionは(PageView_Association.View.Version、PageView_Association.Page.Version)にマップされます

それを回避する唯一の方法は、そこにそれを置くという目的を完全に無効にする列を複製することでした。

幸運を!

于 2010-10-12T05:18:46.323 に答える