添加新项

时间:2016-01-15 13:16:32

标签: c# entity-framework

我的模型看起来像这样:

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; }
}

这意味着我有一个可以生孩子的父母。孩子们也可以生孩子。每个孩子都有对其所属父母的引用(即使它是孩子的​​孩子)。

我的数据库中有以下内容:

  • Child_1
    • Child_1_1
      • Child_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。在本规范之后,对其父母的引用将丢失。它们在数据库中为空。 这与Entity Framework有关,没有加载所有引用(特别是没有嵌套的引用)。

有没有办法做到这一点并告诉实体框架添加父但不更改父项或其子项?

1 个答案:

答案 0 :(得分:1)

我的猜测是你没有在这里展示确切的模型。你的模型意味着两个不同的表。

快速解决方法是添加parent.Children.Add(child)

虽然我会强烈建议你将你的模型重做为类似的东西(尽管在更大的环境中仍然没有意义):

public class Person
{
   public string Name { get; set; }
   public List<Child> Children { get; set; }
}

public class Parent : Person
{
   // Probably this class would contain something useful
}

public class Child : Person
{
    public Person ParentPerson { get; set; }
}