2014-11-03 88 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