Entity framework EF 5添加或更新重复数据

Entity framework EF 5添加或更新重复数据,entity-framework,entity-framework-5,Entity Framework,Entity Framework 5,这是种子方法中的代码: var city = new City { Name = "A" }; var nh = new List<Neigh> { new Neigh { City = city, Name = "N1" }, new Neigh { City = city, Name = "N2" }, new Neigh { City = city, Name = "N3" }, //new Neigh { City = city, Name

这是种子方法中的代码:

var city = new City { Name = "A" };

var nh = new List<Neigh>
{
    new Neigh { City = city, Name = "N1" },
    new Neigh { City = city, Name = "N2" },
    new Neigh { City = city, Name = "N3" },
    //new Neigh { City = city, Name = "N4" },
};

context.Neighs.AddOrUpdate(
    p => p.Name,
    nh.ToArray()
);
var city=new city{Name=“A”};
var nh=新列表
{
新Neigh{City=City,Name=“N1”},
新Neigh{City=City,Name=“N2”},
新Neigh{City=City,Name=“N3”},
//新Neigh{City=City,Name=“N4”},
};
context.Neighs.AddOrUpdate(
p=>p.Name,
nh.ToArray()
);
运行更新数据库后,一切正常。我可以毫无问题地运行它多次。然而,如果在某个时刻我取消注释第四个邻域并再次运行更新数据库,我将得到两条记录,其中城市“A”,N4指向该城市,而其余的点指向原始城市


如果列表得到更新,如何防止插入重复的城市?

必须通过检查城市是否已存在来启动脚本:

var city = context.Cities.FirstOrDefault(c => c.Name == "A") 
                                     ?? new City { Name = "A" };