2

これらの 2 つのエンティティがあり、エラーを発生させるマーク付きプロパティを追加しました (エラーは、タイプ間の関連付けのプリンシパル エンドを特定できません ... ) 。

public class Lot
{
   [Key]
   public int Id { get; set; }

   public int Vehicle_Id { get; set; }

   [ForeignKey("Vehicle_Id")]
   public virtual Vehicle Vehicle { get; set; }
}

public class Vehicle
{
   public int Id { get; set; }
   public virtual Lot Lot { get; set; } // * This is the property that I added
}

ビークルはロットに属する場合と属さない場合がありますが、ロットには常に 1 つのビークルが含まれます。

Vehicle クラスのこれら 2 つのエンティティ間に逆方向のナビゲーション プロパティが必要でした。これにより、Vehicle に関連付けられた Lot がある場合に、Vehicle からその Lot にアクセスできるようになります。

これは可能ですか?もしそうなら、どうすればエラーなしでそれを行うことができますか?

4

3 に答える 3

2

いいえ、Entity Framework はこれをサポートしていません。Entity Framework では、主キーを共有するために、0 対 1/1 対 1 の関係にあるテーブルが必要です。別々のロット ID と車両 ID を持っているので、できる最善の方法は、これを次のようにマッピングすることです。

public class Vehicle
{
  public int Id { get; set; }
  public virtual ICollection<Lot> Lots { get; set; }
}

にアクセスしますvehicle.Lots.SingleOrDefault()。これにより、EF はそれを 1 対多の関係として扱うことができますが、「多」が複数になることはありません。

于 2013-07-19T12:55:24.330 に答える