【发布时间】:2016-01-15 13:16:32
【问题描述】:
我有一个看起来像这样的模型:
public class Parent
{
public string Name { get; set; }
public List<Child> Children { get; set; }
}
public class Child
{
public string Name { get; set; }
public Parent Parent { get; set; }
public Child ParentChild { get; set; }
public List<Child> Children { get; set; }
}
这意味着我有一个可以生孩子的父母。孩子也可以生孩子。每个孩子都有一个对它所属的父母的引用(即使它是孩子的孩子)。
我的数据库中有以下内容:
父母
- 孩子_1
- 孩子_1_1
- Child_1_1_1
- 孩子_1_1
我现在想添加 Child_1_2。
var child = new Child(){ Name = "Child 1.2" };
child.ParentChild = child_1;
child.Parent = parent;
context.Children.Add(child);
context.SaveChanges();
我现在的问题是这将改变 Child_1_1 和 Child_1_1_1。在本准则之后,对其父母的引用将丢失。它们在数据库中将为空。 这与实体框架未加载所有引用(尤其是嵌套的引用)有关。
有没有办法做到这一点并告诉实体框架添加父级但不更改父级或其任何子级?
【问题讨论】:
-
您如何检索 child_1?
-
我检索 child_1 类似于: context.Children.Where(c => c.Name == "Child 1").FirstOrDefault();但这并没有添加所有的引用。
-
请参阅"Should questions include “tags” in their titles?",其中的共识是“不,他们不应该”!
标签: c# entity-framework