@DenisVladimirovich

Что не так с Entity Framework Core?

Доброго дня, уважаемые. Помогите. Работало все нормально, но стала выскакивать ошибка вида
"SqlException: Невозможно вставить явное значение для столбца идентификаторов в таблице "Deals", когда параметр IDENTITY_INSERT имеет значение OFF.
"
Заметил, что ID У объекта минимальное значение int32. При этом я заранее ставлю его в нулевое значение.
for (int k =0; k < deals1.Length; k++) {
                                deals1[k].ParentDealID = db.Deals.Where(d => d.GUID == parentDealInfo.GUID).FirstOrDefault().DealID;
                                deals1[k].DealID = 0;
                                Console.WriteLine(JsonConvert.SerializeObject(deals1[k]));
                                Console.WriteLine("Сделка: {0}; ParentDeal: {1}", deals1[k].ChildNumber, deals1[k].ParentDealID);
                                db.Add(deals1[k]);
                                db.SaveChanges();
                                Thread.Sleep(5);
                            }


5d6ce5d63ca2a399100305.png
Или может я чего-то в индексах не понимаю. Если я его явно не задал то он должен вроде как сам установиться, да и EFCore вроде заботится об этом.
  • Вопрос задан
  • 301 просмотр
Пригласить эксперта
Ответы на вопрос 1
SergeyEgorov
@SergeyEgorov
Веб разработчик
Такое бывает тогда, когда DealID вручную меняют на записи, которая уже присутствует в базе.

Откуда взялись deals1? Выборка из контекста базы данных? Если да, то EntityFramework знает что эти записи уже есть в базе и отслеживает их изменения. Соответственно не дает поменять их идентификаторы явно и перезаписать их в базу повторно.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы