C# 使用graphdiff和实体框架设置继承对象的外键关联

C# 使用graphdiff和实体框架设置继承对象的外键关联,c#,entity-framework,ef-code-first,graphdiff,C#,Entity Framework,Ef Code First,Graphdiff,我在更新从另一个类继承的外键上的值时遇到问题。我在实体框架中处理分离的对象,所以我使用graphdiff来处理它 我简化了代码,使其更易于阅读 项目类别: public class Project { public Guid Id { get; set; } public virtual List<Activity> Activities { get; set; } } 冲浪活动等级: public class Activity { public Guid

我在更新从另一个类继承的外键上的值时遇到问题。我在实体框架中处理分离的对象,所以我使用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、名称、公司和注释是否保存在活动表和SurfingActivity表中,而不是保存在天气表中。有没有人建议如何解决这个问题,而不必在项目中创建一个新属性,该属性包含一个具有冲浪活动的列表,我在GraphDiff中询问了andypelzer,但目前不支持该属性。在这种情况下(但如果实体变得更加嵌套),我的解决方法是将外键属性添加为数据类型,并将数据注释ForeignKey添加到带有实体的外键,如下所示:

    public System.Guid? Weather_Id { get; set; }

    [ForeignKey("Weather_Id")]
    public virtual Weather Weather { get; set; }
问题链接: