1

我在更新从另一个类继承的外键上的值时遇到问题。我正在使用 Entity Framework 中的分离对象,所以我使用 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)
        )
    );
}

我只能在 Activity 中关联 Company 属性,但不能关联 SurfingActivity 的天气。当我传递 SurfingActivity 的值时,Id、Name、Company 和 Comment 是否会保存在 Activity 表和 SurfingActivity 表中,但不会保存在天气中。有没有人有任何建议如何解决这个问题而不必在 Project 上创建一个包含 surfingActivity 列表的新属性

4

1 回答 1

1

我在 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

于 2014-11-04T09:56:23.973 回答