我有一个固定行数的表,每个州有51个加上DC。除了StateCode列之外,还有一些每状态数据。但行数不会改变。
StateCode DataColum1 DataColumn2 etc
当db被播种时,我需要用51行填充表,如果它们不存在的话。但如果他们这样做,我需要独自离开桌子。
我目前正在做的方式每次执行database-update
时都会清除所有数据。
context.StateLeadSettings.AddOrUpdate(s => s.StateCode,
new StateLeadSettings() { StateCode = "AK" },
....
);
不确定如何更改此选项,只有在它们不存在时才会添加。
答案 0 :(得分:1)
尝试这个逻辑:
var stateLeadSettings = new List<StateLeadSettings>{
new StateLeadSettings() { StateCode = "AK" },
....
};
var codes = stateLeadSettings.Select(x => x.StateCode).ToList();
var existed = context.StateLeadSettings.Where(x => codes.Contains(x.StateCode))
.Select(x => x.StateCode).ToList();
context.StateLeadSettings.AddRange(stateLeadSettings
.Where(x => !existed.Contains(x.StateCode)).ToList());
context.SaveChanges();