実際の違いは何ですか:
this.HasRequired(a => a.Something)
.WithMany()
.Map(a => a.MapKey("SomethingId"));
と
this.HasRequired(a => a.Something)
.WithMany()
.HasForeignKey(a => a.SomethingId);
実際の違いは何ですか:
this.HasRequired(a => a.Something)
.WithMany()
.Map(a => a.MapKey("SomethingId"));
と
this.HasRequired(a => a.Something)
.WithMany()
.HasForeignKey(a => a.SomethingId);
SomethingId
どちらのマッピングも、null許容でない外部キーと、2つの関連するテーブル間の参照制約を使用して、まったく同じデータベーススキーマを作成します。
最初のマッピングMapKey
は、モデルクラスのプロパティとして外部キーを使用したくない場合に使用されます。この場合の関連付けのタイプは、独立関連付けと呼ばれます。HasForeignKey
外部キーがモデルのプロパティである場合に、2番目のマッピングを適用します。このタイプは外部キーアソシエーションと呼ばれます。
多くのシナリオでは、外部キーアソシエーションを使用する方が簡単ですが、多くの人は、オブジェクトの世界にリレーショナルアーティファクト(外部キー)があるとクリーン性が低いと考えているため、独立アソシエーションを好みます。
2種類の関連付けとその長所と短所に関する参考資料を次に示します。