1

我有兩個表:EF6 +/7添加了哪些可以添加更新子表的方法?

public AdminTest() 
    { 
     this.AdminTestQuestions = new List<AdminTestQuestion>(); 
    } 
    public int AdminTestId { get; set; } 
    public string Title { get; set; }  
    public virtual ICollection<AdminTestQuestion> AdminTestQuestions { get; set; } 
} 

public partial class AdminTestQuestion 
{ 
    public int AdminTestQuestionId { get; set; } 
    public int AdminTestId { get; set; } 
    public System.Guid QuestionUId { get; set; } 
    public virtual AdminTest AdminTest { get; set; } 
} 

我使用下面的EF6代碼中添加一個新的adminTest(其adminTestQuestions)到 數據庫:

public async Task<IHttpActionResult> Post([FromBody]AdminTest adminTest) 
    { 
     db.AdminTests.Add(adminTest); 
     foreach (AdminTestQuestion adminTestQuestion in adminTest.AdminTestQuestions) 
     { 
      db.AdminTestQuestions.Add(adminTestQuestion); 
     } 
     await db.SaveChangesAsync(User, DateTime.UtcNow); 
     return Ok(adminTest); 
    } 

我有類似但更復雜的代碼處理添加或刪除adminTest問題的情況。我所有的代碼都可以工作,但如果EF能夠做我所需要的,而不是添加許多代碼行,那將會非常好。

誰能告訴我,如果有到過EF6任何改變,或者如果任何更改計劃EF7,將允許它

+1

[無尚的地位(http://data.uservoice.com/forums/72025-entity-framework-feature-suggestions/suggestions/1069431-merge - 方法 - 自動同步關係)和[仍然提議](http://entityframework.codeplex.com/workitem/864) – 2014-09-30 14:02:42

回答

-1

對他們的接縫已經增加了一些整潔的代碼,添加主鍵EF7 github上指出實體。

但是它仍然不清楚在實體中是否會收集兒童的常見信息。 Git hub Entity Framework Design Meeting Notes

但是對於EF6,您可以使用Generic Repository來爲您完成所有工作。 (因爲你不能延伸的DbContext直接)

假設DB是一個的DbContext

,你可以用這個 - >:Accessing a Collection Through Reflection

然後從包含的ICollection <一個T類找到所有樓盤>和做對ICollection屬性的項目的foreach然後執行db.Set.Add(proprietyChild)

這將消除總是重複相同的添加孩子到實體代碼的需要。

有些人已經做了實現解決方案你:Automated updates of a graph of deached entities