Почему использование EF Core приводит к дублированию значений идентификаторов?C#

Место общения программистов C#
Ответить
Anonymous
 Почему использование EF Core приводит к дублированию значений идентификаторов?

Сообщение Anonymous »

Я использую EF Core (9.0.0) в качестве файла приложения/проекта с базой данных SQLite. У меня возникла проблема, из-за которой функция SaveChanges выдает исключение из-за повторяющихся значений идентификатора.
Вот шаги:
  • Создайте один объект в моем проекте, объект инициализируется с идентификатором = 0
  • Создайте DbContext и добавьте объект в DbContext
  • Позвонить SaveChanges(), и объект теперь имеет идентификатор = 1
  • Если я использую браузер SQLite DB, я вижу, что объект хранится с идентификатором = 1< /code>
  • Закройте приложение и перезапустите
  • Загрузите файл проекта, и объект загружается в приложение с идентификатором = 1 из базы данных
  • Создать новый объект, который инициализируется с идентификатором = 0
  • Создайте новый DbContext и добавьте как исходный объект () и новый объект ()
  • Вызов SaveChanges()
В этот момент я получаю исключение:

SqliteException: Ошибка SQLite 19: «Ограничение UNIQUE не выполнено: [Class].Id».

Объекты, с которыми возникла эта проблема, имеют идентификатор свойство определяется следующим образом:

Код: Выделить всё

public int Id { get; set; }
Как мне выполнить рефакторинг приложения, чтобы избежать конфликта идентификаторов? Я не уверен, как работает ответственность за управление и присвоение значений идентификаторов. Я думал, что могу просто игнорировать поля ID и настроить связи, позволяя EF полностью обрабатывать значения полей ID, но, похоже, я что-то упустил.

Подробнее здесь: https://stackoverflow.com/questions/793 ... -id-values
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»