我们正在尝试将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个实体映射到第二个实体的方法,如果第一个实体具有第二个实体的主键,而第二个实体没有任何关键字返回第一个实体?
答案 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的类。在编辑数据库中的值时,这样做会引起头疼。