将重复数据存储在Entity Framework中

时间:2017-02-20 16:42:25

标签: entity-framework inheritance entity-framework-6

有没有办法将某个字段映射到Entity Framework中的多个列?具体方案是使用具有Table per Type层次结构的继承。我希望某个字段出现在基本类型表和具体类型表中。

示例:

abstract class BaseEntity
{
     int id { get; set; }
     DateTime createDate { get; private set; }
     string TypeName { get; private set; }

}

public class Person : BaseEntity
{
     int id { get; set; }
     DateTime createDate { get; private set; }
     string TypeName { get; private set; }
     string FirstName {get; set;}
     string LastName {get; set;}
     DateTime DateOfBirth {get; set;}
}

基类表

int ID,
DateTime createDate,
varchar TypeName

具体类表

int ID,
DateTime createDate,
varchar FirstName,
varchar LastName,
DateTime DateOfBirth

这两个表中都没有ID,因为它是主键。但是,创建日期被视为单独的数据。

这样做的主要原因是数据库维护和可支持性。我知道重复数据不是一个好习惯。这只适用于少数几个领域。

1 个答案:

答案 0 :(得分:0)

不可能这不可能,这也不是很好的C#代码,因为你很可能会发出一条警告,说CreateDate正在隐藏一个继承的属性。

您可以使用数据库触发器解决此问题,该数据库触发器在派生表中的插入/更新完成后插入/更新值。