Используя MVC EF4.1, я пытаюсь связать таблицу (TableMaster) с TableChildOne (отношение один к нулю или один), а также с TableChildTwo (также один к нулю или один).
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);
}
Когда я полностью удаляю вторую таблицу, она отлично работает.
Я использовал приведенную ниже ссылку в качестве примера (таблицы OfficeAssignment и Student), которая показывает, как связать таблицу «один к нулю или один». Но у меня проблемы с добавлением другой таблицы с такой же связью:
http://www.asp.net/mvc/tutorials/getting-started-with-ef-using-mvc/creating-a-more-complex-data-model-for-an-asp-net-mvc-application
Любая помощь будет оценена.
Спасибо
appelmeester