2010-08-27 47 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(); 

上述情况适用于实体模型的默认配置。实体框架还提供了许多选项,您还可以决定实体上下文的行为。 你只需要自己尝试这些和这种情况。我认为会更好。