Entity Framework Core PostgreSQL Вставка -2147482647 Id

У меня есть проект .NET Core 2.0, который использует базу данных Postgres, которую я использую EntityFrameworkCore.PostgreSQL (2.0.1), которая вставляет странное значение для моего идентификатора таблицы.

Кажется, это происходит случайно и, похоже, полностью игнорирует мою идентификационную последовательность.

Он вставляет наименьшее значение int32 -2147482647 в качестве идентификатора вставляемой строки. Тогда все будущие вставки не могут произойти, и это вызывает эту ошибку:

Экземпляр типа сущности «Объект» не может быть отслежен, поскольку другой экземпляр с таким же значением ключа для {'Id'} уже отслеживается. При присоединении существующих сущностей убедитесь, что присоединен только один экземпляр сущности с заданным значением ключа. Рассмотрите возможность использования DbContextOptionsBuilder.EnableSensitiveDataLogging для просмотра конфликтующих значений ключей.

Перед сохранением Entity я знаю, что он использует идентификатор мусора, который, как я полагаю, является отрицательным, но, насколько я понимаю, при сохранении этот идентификатор должен быть обновлен в соответствии с вашей последовательностью. И похоже, что будущие вставки также получают тот же идентификатор мусора, который вызывает ошибку, которую я получаю.

Интересно, была ли у кого-нибудь еще эта проблема, и если да, то в чем причина.

ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
1
0
347
1

Ответы 1

Поздний ответ, но для других, которые находят этот вопрос: Да, я видел это, и в сочетании с базой данных EF Core + PostgreSQL. Убедитесь, что значение последовательности в вашем основном столбце правильное! Для нас «текущее значение» было как-то неправильно выставлено так, чтобы следующее попало по уже существующему id.

Я думаю, что здесь происходит то, что это рассматривается как специальное значение для новых строк, но оно предоставляется пользователю, когда новая строка не может быть вставлена ​​по причинам, связанным с базой данных. Я не думаю, что это обычно проблемы Entity Framework Core.

Другие вопросы по теме