种子正在清除现有数据
Seed is wiping out existing data
我有一个 table 固定行数,51 行对应每个美国州加上哥伦比亚特区。除了 StateCode 列之外,还有一些每个州的数据。但是行数不会改变。
StateCode DataColum1 DataColumn2 etc
为数据库播种后,如果不存在,我需要用 51 行填充 table。但如果他们这样做,我需要单独留下 table。
我目前的做法是每次执行 database-update
.
时都会清除所有数据
context.StateLeadSettings.AddOrUpdate(s => s.StateCode,
new StateLeadSettings() { StateCode = "AK" },
....
);
不确定如何更改此设置,因此它仅在它们不存在时添加。
试试这个逻辑:
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();
我有一个 table 固定行数,51 行对应每个美国州加上哥伦比亚特区。除了 StateCode 列之外,还有一些每个州的数据。但是行数不会改变。
StateCode DataColum1 DataColumn2 etc
为数据库播种后,如果不存在,我需要用 51 行填充 table。但如果他们这样做,我需要单独留下 table。
我目前的做法是每次执行 database-update
.
context.StateLeadSettings.AddOrUpdate(s => s.StateCode,
new StateLeadSettings() { StateCode = "AK" },
....
);
不确定如何更改此设置,因此它仅在它们不存在时添加。
试试这个逻辑:
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();