Entity Framework 实体拆分一对多

Entity Framework entity splitting one to many

我们正在尝试将 EF 用作 Business Entity Mapping model。我们不想为每个 class 生成 1 table,而是想展平 tables(实体拆分)并为 class 生成一个业务对象,让 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。

编辑

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

编辑

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

如果您不喜欢 EF 为您构建 class 的方式,请根据需要自行创建。 (假设您有 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) };

您可以访问您设置的结构中的值 up.That 据说,我建议使用 EF 的 classes。在编辑数据库中的值时,以这种方式进行操作可能会让人头疼。