使用graphdiff和实体框架将关联设置为继承对象的外键
本文关键字:继承 对象 设置 关联 graphdiff 实体 框架 使用 | 更新日期: 2023-09-27 18:28:49
我在更新从另一个类继承的外键的值时遇到问题。我正在实体框架中处理分离的对象,所以我使用graphdiff来处理它
我简化了代码,使其更容易阅读
项目类别:
public class Project
{
public Guid Id { get; set; }
public virtual List<Activity> Activities { get; set; }
}
活动类别:
public class Activity
{
public Guid Id { get; set; }
public String Name { get; set; }
public virtual Company Company { get; set; }
}
冲浪活动类别:
public class SurfingActivity : Activity
{
public String Comment { get; set; }
public virtual Weather Weather { get; set; }
}
使用graphdiff:的更新上下文
public void UpdateActivity(Project project)
{
this.UpdateGraph(project, map => map
.OwnedCollection(p => p.Activities, with => with
.AssociatedEntity(a => a.Company)
)
);
}
我只能在活动中关联公司属性,但不能关联冲浪活动的天气。当我传递SurfingActivity的值时,Id、Name、Company和Comment是否会保存在Activity表和SurfingActivity表中,但不会保存在weather中。有人建议如何解决这个问题,而不必在Project上创建一个包含surfingActivity 列表的新属性吗?
我在GraphDiff中询问了andypelzer,但目前不支持。在这种情况下(但如果实体变得更加嵌套,则不会),我的解决方案是将外键属性添加为数据类型,并将数据注释ForeignKey添加到实体的外键中,如下所示:
public System.Guid? Weather_Id { get; set; }
[ForeignKey("Weather_Id")]
public virtual Weather Weather { get; set; }
问题链接:https://github.com/refactorthis/GraphDiff/issues/112