当我有父实体持有其他实体的列表(一对多关系)时,我修改此列表然后调用函数来保存父实体。如果实体已从此列表中删除,那么框架是否会将其从数据库中删除?而且添加到列表中的新实体还会被添加到数据库中吗? 谢谢你的帮助!
答案 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();
以上情况对实体模型的默认配置有效。实体框架还提供了许多选项,您还可以决定实体上下文的行为方式。 你只需要自己尝试这些和这样的情况。我认为会更好。