种子正在消灭现有数据

时间:2017-01-31 03:35:24

标签: c# entity-framework ef-code-first code-first

我有一个固定行数的表,每个州有51个加上DC。除了StateCode列之外,还有一些每状态数据。但行数不会改变。

StateCode    DataColum1    DataColumn2   etc

当db被播种时,我需要用51行填充表,如果它们不存在的话。但如果他们这样做,我需要独自离开桌子。

我目前正在做的方式每次执行database-update时都会清除所有数据。

context.StateLeadSettings.AddOrUpdate(s => s.StateCode,
    new StateLeadSettings() { StateCode = "AK" },
    ....
 );

不确定如何更改此选项,只有在它们不存在时才会添加。

1 个答案:

答案 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();