2014-11-03 71 views
1

我在更新从另一个类继承的外键上的值时遇到了问题。我正在使用实体框架中的分离对象,所以我使用graphdiff来处理它。使用graphdiff和Entity Framework将外键关联到继承对象

我已经简化了代码,使其更易于阅读

项目类:

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; } 
} 

SurfingActivity类:

public class SurfingActivity : Activity 
{ 
    public String Comment { get; set; } 

    public virtual Weather Weather { get; set; } 
} 

更新TE环境中使用graphdiff:

public void UpdateActivity(Project project) 
{ 
    this.UpdateGraph(project, map => map 
     .OwnedCollection(p => p.Activities, with => with 
      .AssociatedEntity(a => a.Company) 
     ) 
    ); 
} 

我只能给公司财产在活动相关联,但不是天气SurfingActivity的。当我传递SurfingActivity的值时,Id,Name,Company和Comment会保存在Activity表和SurfingActivity表中,但不是天气。有没有人有任何建议如何解决,而无需创建包含surfingActivity

回答

1

列表我问andypelzer在GraphDiff项目上一个新的属性,这是目前不支持。我的解决办法,这将在这种情况下工作(但如果实体变得更加嵌套)是外键属性作为数据类型是与数据注解ForeignKey的与实体添加到外键,这样的:

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

    [ForeignKey("Weather_Id")] 
    public virtual Weather Weather { get; set; } 

该问题的链接:https://github.com/refactorthis/GraphDiff/issues/112