EF 5(代码优先)AddOrUpdate复制嵌套数据

时间:2013-02-23 19:56:53

标签: entity-framework-5

我有这些简单的实体:

public class Child
{
    public virtual int Id { get; set; }
    public virtual string Name { get; set; }

    public virtual Parent Parent { get; set; }
}

public class Parent
{
    public virtual int Id { get; set; }
    public virtual string Name { get; set; }

    public virtual ICollection<Child> Children { get; set; }
}

我在种子方法中添加数据如下:

var parent = new Parent { Name = "First" };

context.Parents.AddOrUpdate(p => p.Name, parent);

var children = new[]{
    new Child { Parent = parent, Name = "Child1" },
    new Child { Parent = parent, Name = "Child2" },
};

context.Children.AddOrUpdate(c => c.Name, children);

这可以按预期工作,我可以多次更新数据库(update-database) - 没有重复。但是,如果我添加这样的第三个孩子:

var parent = new Parent { Name = "First" };

context.Parents.AddOrUpdate(p => p.Name, parent);

var children = new[]{
    new Child { Parent = parent, Name = "Child1" },
    new Child { Parent = parent, Name = "Child2" },
    new Child { Parent = parent, Name = "Child3" },
};

context.Children.AddOrUpdate(c => c.Name, children);

再次调用update-database 插入第二个父级,现在我在数据库中有两个父级。如果我需要第四个孩子并添加它,将插入第三个父母,依此类推。

如何防止这种情况发生?

0 个答案:

没有答案