2017-10-18 62 views
1

我正在使用實體框架。如何將現有子項添加到新父項

我的模式是這樣的:

:ID,名稱

用戶:ID,名稱,組ID。

情況是這樣的: 我有一個用戶(用戶1)不是任何組的成員。

我創建了一個新組,並且希望將此用戶添加到這個新組中。

我有這樣的代碼:

Dim grp1 as new Group 
grp1.name="Students" 
context.Groups.Add(grp1) 
context.savechanges() 
usr1.GroupID=grp1.ID 
context.savechanges() 

此代碼的工作,但我已經打了兩次調用SaveChanges。 有什麼辦法可以將現有的usr1附加到grp1的子集合,並且只需要一次調用Savechanges?

謝謝!

+0

您是否嘗試過除去第一context.SaveChanges()?我認爲這兩個Add()將仍然正常工作。 – Kokombads

+0

如果你想添加'User'到''''''''用戶'集合,那麼你應該這樣做:'grp1.Users.Add(usr1)'。 – jmcilhinney

+0

@jmcilhinney但usr1存在,並不是一個新的對象。 – Adriano

回答

0

如果usr1是跟蹤實體,那麼你可以添加組到用戶的導航Group財產,而不是試圖用的ID。

Dim grp1 as new Group 
grp1.name="Students" 
usr1.Group=grp1 
context.savechanges() 

https://msdn.microsoft.com/en-us/library/jj713564(v=vs.113).aspx

通過指派新的對象來導航屬性。以下代碼 創建課程和部門之間的關係。如果將 對象附加到上下文中,則該課程也會被添加到 department.Courses集合,並將課程對象上相應的外鍵 屬性設置爲 部門的關鍵屬性值。部門=部門;

https://msdn.microsoft.com/en-us/library/jj592676(v=vs.113).aspx(見博客例子)

using (var context = new BloggingContext()) 
{ 
    // Add a new User by setting a reference from a tracked Blog 
    var blog = context.Blogs.Find(1); 
    blog.Owner = new User { UserName = "johndoe1987" }; 

    context.SaveChanges(); 
} 
相關問題