使用 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-应用程序
任何帮助将不胜感激。
谢谢appelmeester