У меня есть следующий код:EF6 вставки или обновления для сбора лиц
using (var context = new DataContext())
{
var dbHistoryItems = context.Set<HistoryItem>();
var historyItems = history as HistoryItem[] ?? history.ToArray();
var historyItemIds = historyItems.Select(c => c.Id);
var existingEntities = dbHistoryItems.Where(h => historyItemIds.Contains(h.Id));
if (existingEntities.Any())
{
var newEntities = historyItems.Where(h => !existingEntities.Select(e => e.Id).Contains(h.Id));
dbHistoryItems.AddRange(newEntities);
}
context.SaveChanges();
}
где history
является входной параметр List<HistoryInfo>
Когда объект является новым (объект с идентификатором не существует в контексте) добавить это в контексте. Когда сущность существует - я просто хочу ее сохранить (ее можно изменить).
Проблема в этом коде с обновлением. Он не обновляет существующие объекты.
UPD:
Есть ли лучший способ для вставки или сбора обновлений сущностей затем в цикле, как:
foreach(var item in collection)
{
db.AddOrUpdate(item);
}
db.SaveChanges;
Вы не изменяете никаких свойств. Откуда берется «история» и какие обновления вы ожидаете? – CodeCaster
И нет, _ "history is input parameter List" _ не уточняет это. Является ли это отдельным объектом, например, с помощью формы POST MVC? –
CodeCaster