【问题标题】:Store duplicate data in Entity Framework在实体框架中存储重复数据
【发布时间】:2017-02-20 16:42:24
【问题描述】:

有没有办法将某个字段映射到实体框架中的多个列?具体场景是使用 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 不是问题,因为它是主键。但是,创建日期被视为单独的数据。

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

【问题讨论】:

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


    【解决方案1】:

    不,这是不可能的,这也不是好的 C# 代码,因为您很可能会收到警告说 CreateDate 正在隐藏继承的属性。

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

    【讨论】:

    • c# 代码不必像那样。如果有其他方法,则不需要将该属性读入 Person 类。我希望在代码中以某种方式完成您建议的“触发器”
    猜你喜欢
    • 1970-01-01
    • 2012-09-18
    • 2013-12-26
    • 1970-01-01
    • 1970-01-01
    • 2016-12-28
    • 1970-01-01
    • 1970-01-01
    • 2017-06-21
    相关资源
    最近更新 更多