MVC EF4.1 を使用して、テーブル (TableMaster) を TableChildOne (1 対 0 または 1 の関係) および TableChildTwo (1 対 0 または 1) にリンクしようとしています。TableChildOne と TableChildTwo は直接リンクされていません。
TablechildOne と TableChildTwo は、TableMaster の主キーを共有する必要があります (これは不可能だと読みましたが、回避策はありますか?)
これをもう少し明確にするために画像を含めています。外部キーをどこかに追加する必要があるかどうかはわかりません。これはコードによって作成された実際のモデルではありませんが、私が望むものです。どこかに外部キーが必要かどうかわかりませんか?
画像 : http://www.davidsmit.za.net/img/untitled.png
以下のコードはコンパイルされますが、コントローラーを追加しようとするとエラーが発生します。
「同じキーのアイテムが既に追加されています」
public class TableMaster
{
public int TableMasterID { get; set; }
public DateTime ReportDate { get; set; }
public virtual TableChildOne TableChildOne { get; set; }
public virtual TableChildTwo TableChildTwo { get; set; }
}
public class TableChildOne
{
[Key]
public int TableMasterID { get; set; }
public String Description_1 { get; set; }
public virtual TableMaster TableMaster { get; set; }
}
public class TableChildTwo
{
[Key]
public int TableMasterID { get; set; }
public String Description_2 { get; set; }
public virtual TableMaster TableMaster { get; set; }
}
public class Context : DbContext
{
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<TableMaster>()
.HasOptional(p => p.TableChildOne).WithRequired(p => p.TableMaster);
modelBuilder.Entity<TableMaster>()
.HasOptional(p => p.TableChildTwo).WithRequired(p => p.TableMaster);
}
2 番目のテーブルを完全に削除すると、正常に動作します。
以下のリンクを例として使用しました (OfficeAssignment テーブルと Student テーブル)。これは、テーブルを 1 対 0 または 1 でリンクする方法を示しています。しかし、同じリンケージを持つ別のテーブルを追加するのに問題があります: http://www.asp.net/mvc/tutorials/getting-started-with-ef-using-mvc/creating-a-more-complex-data-model- for-an-asp-net-mvc-アプリケーション
どんな助けでも大歓迎です。
ありがとうございます