实体框架实体将一个分成多个

时间:2016-02-16 21:03:08

标签: c# entity-framework data-persistence

我们正在尝试将EF用作Business Entity Mapping model。我们希望将每个类生成1个表(实体拆分)并为类生成业务对象,让实体框架处理 CRUD ,而不是每个类生成1个表。

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

我们拥有什么:

 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。

修改

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

修改

是否存在将1个实体映射到第二个实体的方法,如果第一个实体具有第二个实体的主键,而第二个实体没有任何关键字返回第一个实体?

1 个答案:

答案 0 :(得分: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的类。在编辑数据库中的值时,这样做会引起头疼。