1

私はこれらの単純なエンティティを持っています:

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) を複数回更新できます - 重複はありません。ただし、次のように 3 番目の子を追加すると:

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を再度呼び出して、2 番目の親が挿入され、データベースに 2 つの親が作成されました。4 番目の子が必要で追加すると、3 番目の親が挿入されます。

これを防ぐにはどうすればよいですか?

4

0 に答える 0