c# – 实体框架DB-First,实现继承
发布时间:2020-12-15 03:56:29 所属栏目:百科 来源:网络整理
导读:我试图使用实体框架6.0和数据库第一种方法实现继承.好的,假设我有个人和组织实体,如下所示: // a simplified version of organization entitypublic class Organization{ public Guid ID { get; set; } public string Nickname { get; set; } public string
我试图使用实体框架6.0和数据库第一种方法实现继承.好的,假设我有个人和组织实体,如下所示:
// a simplified version of organization entity public class Organization { public Guid ID { get; set; } public string Nickname { get; set; } public string Email { get; set; } public string PhoneNumber { get; set; } public string OfficialName { get; set; } public Guid CEOID { get; set; } public DateTime? RegisterDate { get; set; } } // a simplified version of person entity public class Person { public Guid ID { get; set; } public string Nickname { get; set; } public string Email { get; set; } public string PhoneNumber { get; set; } public Guid PersonID { get; set; } public string FirstName { get; set; } public string LastName { get; set; } public string MiddleName { get; set; } public string NationalCode { get; set; } public DateTime? BirthDate { get; set; } } 我可以在数据库中创建这两个表,但是我想使用继承,所以在Person和Organization中重复的字段可以在另一个基类中,如下所示: public class Identity { // These fields are the common fields between Person and Organization public Guid ID { get; set; } public string Nickname { get; set; } public string Email { get; set; } public string PhoneNumber { get; set; } } 如何在db-first方法中实现这一点? 解决方法
一种可能的方法是使用一种称为TPT(每种类型表)的表,我喜欢使用它.要实现这一点,您可以像下图所示的模型来定义表:
请注意,子基础实体之间的关系在其pk列上是一对一的,所有常用字段都将移动到基表.创建表后,右键单击可视化工作室中的模型页面,然后从“数据库…”中选择“更新模型”,然后在“添加”选项卡中,选择要添加的3个表.起初你应该看到这个模型图,需要改变一下: 对人员和组织分别执行以下步骤: >右键单击实体,然后选择“属性” 这些步骤之后,保存您的模型.现在你的模型应该是这样的: 现在编译你的项目,享受你的生活! 附:我感谢任何人可以编辑我的答案并解释实体框架中的TPH(每层次分层)继承. 希望这可以帮助. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |