2010-08-27 44 views
2

當我有一個父實體擁有其他實體列表(一對多關係)時,我修改此列表然後調用函數來保存父實體。隨着實體已經從這個列表中刪除,該框架是否會從數據庫中刪除它們?並且新實體已添加到列表中將被添加到數據庫中? 感謝您的幫助!實體框架 - 修改子對象列表

回答

3

假設你有父母與子女之間的一對多關係,即父母有ChildList,孩子有父母。 看着案件。如果Parent位於實體上下文中,並將Child的實例添加到Parent的ChildList中,並保存上下文,則Child將被添加到數據庫中。

Parent parent = new Parent() { Name = "parent1" }; 
provider.AddToParentSet(parent) 
parent.ChildList.Add(new Child() { Name = "child1" }); 
parent.ChildList.Add(new Child() { Name = "child2" }); 
parent.ChildList.Add(new Child() { Name = "child3" }); 
provider.SaveChanges(); 

如果從Parent的ChildList中刪除一個Child並保存上下文,那麼由於外鍵約束,您將得到一個異常。

Parent parent = provider.ParentSet.FirstOrDefault(); 
parent.ChildList.Remove(parent.ChildList.FirstOrDefault()); 
provider.SaveChanges(); 

如果刪除了從上下文屬於母公司的childList的童車之一,保存的背景下,這將是成功的,它會從數據庫中刪除。

provider.DeleteObject(parent.ChildList.FirstOrDefault()); 
provider.SaveChanges(); 

上述情況適用於實體模型的默認配置。實體框架還提供了許多選項,您還可以決定實體上下文的行爲。 你只需要自己嘗試這些和這種情況。我認爲會更好。