我正在努力解决如何将这两个表映射到一起的问题,TitleID
表上的列Name
映射到TitleID
表上的Title
。表主键为NameTableID
/ TitleTableID
并且是唯一的,NameID
,TitleID
(在两个表上)都不是唯一的,当前记录在null中找到DateEnd
列。
public class Name
{
public int NameTableID { get; set; }
public int NameID { get; set; }
public int TitleID { get; set; } // Maps to Title.TitleID
public virtual Title Title { get; set; }
public string GivenName { get; set; }
public string FamilyName { get; set; }
public DateTime DateStart { get; set; }
public DateTime? DateEnd { get; set; }
}
public class Title
{
public int TitleTableID { get; set; }
public int TitleID { get; set; } // Maps to Name.TitleID
public string Description { get; set; }
public DateTime DateStart { get; set; }
public DateTime? DateEnd { get; set; }
}
我假设我需要在我的数据库上下文类中向OnModelCreating
添加一些代码,但我正在努力解决映射/代码,任何想法?
谢谢, 马丁
答案 0 :(得分:1)
这根本不是关系。您无法在两个任意列上建立关系。您应该阅读一些关于数据库关系如何工作以及构建关系的要求的介绍。
在多对多中你必须在两端选择唯一的密钥,并且必须有一个联结表,它将构建成对的相关密钥。 EF不支持唯一键,因此构建多对多关系的唯一方法是在主键之上:如果您想要多对多关系,则必须在Title.TitleTableID
和{{1}上构建它}}