实体框架实体拆分为一对多
本文关键字:实体 一对多 拆分 框架 | 更新日期: 2023-09-27 18:34:49
我们试图将EF
用作Business Entity Mapping model
。我们希望平展表(实体拆分(并为该类生成业务对象,而不是为每个类生成 1 个表,让实体框架处理 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。
编辑
为了更清楚地说明问题,我正在寻找一种方法将多个表平展为 1 个实体,然后在将一个编辑保存回数据上下文时让 EF 自动更新多个表
编辑
如果第一个实体具有第二个实体的主键,而第二个实体没有任何与第一个实体相关的键,是否有办法将 1 个实体映射到第二个实体?
如果您不喜欢 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 的类。在编辑数据库中的值时,这样做可能会令人头疼。