3

Code First on EF5 プロジェクトで手動マッピング エンティティを使用しており、複合 PK として FK を使用したいと考えています。以下に示すように、マッピング クラス (FK ではない) にはナビゲーション プロパティしかありません。

class MyMapping
{
  public virtual Mapped1 {get;set;}
  public virtual Mapped2 {get;set;}
}

「int Mapped1FK」/「int Mapped2FK」のようなフィールドを追加したくないのですが、この場合、複合キーを指定する方法が見つかりません。

私はそれが次のようなものであるべきだと仮定します:

modelBuilder.Entity<MyMapping>()
  .HasKey(k => k.Mapped1)
  .HasKey(k => k.Mapped2);

また

modelBuilder.Entity<MyMapping>()
  .HasKey(k => { k.Mapped1, k.Mapped2} );

しかし、私は正確に何が正しいのかわかりません。

4

2 に答える 2

2

ナビゲーション プロパティを主キー プロパティとして使用することはできません (複合であるかどうかに関係なく)。intキー プロパティには、 orstringGuidなどのプリミティブ型が必要です。

于 2013-01-08T16:04:51.407 に答える
0

Slauma が説明したように、プリミティブな FK プロパティを導入せずに、私が望むことを行うことは不可能です。

そこで、通常の POCO と同じようにマッピング エンティティを操作することにしました - で基本クラスを継承します

public int Id {get;set;}

宣言し、PK として使用します。

また、他のソースでは、アーキテクチャの感覚により、次のことが推奨されました。単純なマッピング (2 つの FK) を複雑なマッピング (2 つの FK + カスタム フィールド) に変換すると、プロジェクト内の他のエンティティと同じように通常のエンティティになり、同じものを持つ必要があります。制約と構造。

于 2013-01-09T10:51:03.853 に答える