实体框架 - 修改子对象列表

时间:2010-08-27 08:54:00

标签: entity-framework entity

当我有父实体持有其他实体的列表(一对多关系)时,我修改此列表然后调用函数来保存父实体。如果实体已从此列表中删除,那么框架是否会将其从数据库中删除?而且添加到列表中的新实体还会被添加到数据库中吗? 谢谢你的帮助!

1 个答案:

答案 0 :(得分:3)

假设父母和孩子之间有一对多的关系,我。例如,Parent具有ChildList,Child具有Parent。 看案件。如果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();

如果从上下文中删除属于ParentList的Childs之一并保存上下文,它将成功,它将从数据库中删除。

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

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

相关问题