2017-02-20 58 views
0

有没有办法在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,因为它是主键。但创建日期被视为单独的数据。

这样做的主要原因是数据库维护和可支持性。我知道重复数据不是一个好的做法。这只会在几个领域。

回答

0

不,这是不可能的,这也是不好的C#代码,因为你可能会有更多的警告说CreateDate影射了一个继承的属性。

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

+0

c#代码不必看起来像那样。如果有其他方法,则不需要将该属性读取到人员类别。我希望你的暗示在代码中做某事的“触发器” – mfreedm52