这是Seed方法中的代码:
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()
);
运行update-database后,一切都按预期工作。我可以多次运行它没有问题。但是,如果在某些时候我取消注释第四个邻居并再次运行update-database,我最终得到两个城市“A”的记录,N4指向该城市,而其余的则指向原始城市。
如果列表更新,如何阻止插入重复的城市?
答案 0 :(得分:3)
您必须通过检查城市是否已存在来启动脚本:
var city = context.Cities.FirstOrDefault(c => c.Name == "A")
?? new City { Name = "A" };