1

我们正在尝试EF用作Business Entity Mapping model. 我们不想为每个类生成 1 个表,而是希望展平表(实体拆分)并为该类生成一个业务对象,让 Entity Framework 处理CRUD

此外,我们有一个现有的数据库,无法修改架构。我们已经尝试了代码优先和数据库优先的解决方案,但我们无法达到我们既定的目标。

我们有什么:

 public class Call
 {
    public int CallId {get;set;}
    public DateTime callTime {get;set;}
    public int PhoneTypeId {get; set;}

    public virtual PhoneType PhoneType {get; set;}
}

public class PhoneType 
{
     public int PhoneTypeId {get ;set;}
     public string TypeOfPhone {get ;set;}
}

我们想要什么:

public class CallDetails
{    
    public int CallId {get;set;}
    public DateTime callTime {get;set;}
    public string TypeOfPhone {get; set;}
}

编辑

我们在 ef 5 但可以上升到 ef 6。

编辑

为了更清楚地说明问题,我正在寻找一种将多个表展平为一个单一实体的方法,然后在将一个编辑保存回数据上下文时让 EF 自动更新多个表

编辑

如果第一个实体具有第二个实体的主键,而第二个实体没有与第一个实体相关的任何键,是否有办法将一个实体映射到第二个?

4

1 回答 1

2

如果您不喜欢 EF 为您构建课程的方式,请根据需要创建自己的课程。(我写了以下假设你有 C# 6)

public class CallDetails
{
    public Call entityCall { get; set;}
    public int CallId => entityCall.CallId;
    public DateTime callTime {
            get{ return entityCall.callTime;}
            set{ entityCall.callTime = value;}
        }
    public string TypeOfPhone => entityCall.PhoneType.TypeOfPhone;
}

那么当你使用它时

var details = new CallDetails(){ entityCall = db.Calls.Find(id) };

您可以访问您设置的结构中的值。话虽如此,我建议使用 EF 的类。在编辑数据库中的值时,这样做会让人头疼。

于 2016-02-16T21:55:38.257 回答