У меня есть следующий статус foreach
foreach (var e in empList)
{
db.EmployeeForecasts.Add(e);
db.SaveChanges();
}
EmpList содержит только 1 запись, но db.SaveChanges () дважды сохраняет запись в базе данных?
Может кто-нибудь объяснить, почему это происходит и что я могу с этим поделать? Спасибо!
Вы должны использовать SQL Server Profiler и отладчик VS, чтобы узнать, на каком этапе дублируется запись.
Есть ли в empList повторяющиеся записи?
это не ответ на ваш вопрос, но вы должны сохранить изменения после закрытия цикла. и вы также можете использовать AddRange(empList)
Измените свой вопрос, включив в него MCVE, который может быть скомпилирован и протестирован другими, что показывает, что добавляются дубликаты.
В empList есть только одна запись. Контроллер - это сборник форм, до этого работал отлично и вдруг дважды сохраняет запись? Можно ли проверить db.EmployeeForecast, чтобы увидеть, добавлена ли запись дважды?
Я также пытался спасти его, добавив хранимую процедуру. Но тот же результат, он сохраняет запись дважды?
Я пробовал с AddRange, но результат тот же, запись сохранена дважды.





Скорее всего, ваша база данных уже содержит сущность. Вместо использования добавления вы должны посмотреть на
foreach (var e in empList)
{
db.EmployeeForecasts.Attach(e);
}
db.SaveChanges();
Это интересно, вы создали экземпляр контекста db непосредственно перед foreach? Можете ли вы использовать его, чтобы мы были уверены, что он запускает только ваш маленький кусочек трески с Add.
Извините, это была глупая ошибка. Я использую JQuery для отправки формы, но дважды вызывал контроллер. Таким образом, очевидно, что запись была сохранена дважды. Спасибо за помощь.
Не могли бы вы опубликовать некоторые подробности о типах empList и всей функции в целом? Уверены, что его вызывают только один раз?