2010-08-27 13 views
2

Когда у меня есть родительский объект, удерживайте список другого объекта (отношение один ко многим), я изменяю этот список, а затем вызываю функцию для сохранения родительского объекта. С удалением сущностей из этого списка заключается в том, что структура удалит их из базы данных? А также добавленный в список новый объект будет добавлен в базу данных? благодарим за помощь!Entity framework - изменение списка дочерних объектов

ответ

3

Предполагая, что у вас есть отношения друг к другу между родителем и ребенком, т.е. д. Родитель имеет ChildList и Child имеет родителя. Глядя на случаи. Если Parent находится в контексте сущности, и вы добавляете экземпляр Child to ChildList of Parent и сохраняете контекст, тогда 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(); 

Если удалить один из ребенка от ChildList родителя, и сохранять контекст, то вы получите исключение из-за внешнего ключа.

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

Если удалить один из Чайлдс, которые принадлежат ChildList родителя из контекста и сохранять контекст, он будет успешным, то он будет удален из базы данных.

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

Вышеуказанные ситуации действительны для конфигурации модели сущности по умолчанию. Entity Framework также предоставляет множество опций, вы также можете решить, как ведет себя ваш контекст. Вам просто нужно попробовать эти и подобные ситуации самостоятельно. Это будет лучше, я думаю.