如何解决实体框架-映射多对多关系
| 我在努力将这两个表映射在一起,在Name
表上的列TitleID
映射到Title
表上的TitleID
。表的主键是NameTableID
/TitleTableID
,并且是唯一的,NameID
,TitleID
(在两个表上)不是唯一的,当前记录在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; }
}
我假设需要在我的DB Context类中向OnModelCreating
添加一些代码,但是在映射/代码方面苦苦挣扎,有什么想法吗?
谢谢,
马丁
解决方法
这根本不是关系。您不能在两个任意列上建立关系。您应该阅读一些有关数据库关系如何工作以及建立关系的要求的介绍。
在多对多中,您必须在两端选择唯一的密钥,并且必须有将建立相关密钥对的联结表。 EF不支持唯一键,因此构建多对多关系的唯一方法是在主键之上:如果要多对多关系,则必须在
Title.TitleTableID
和Name.NameTableID
上建立它。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。