Временный EntityKey не генерируется
Я создаю новый объект EntityObject, который не существует в базе данных (SQLite). Я заполняю свойства объекта и присоединяю его к родительскому объекту. Я не заполняю свойство первичного ключа, потому что, как я понимаю, EF должен автоматически генерировать мне временный ключ EntityKey. Затем я использую метод AddObject, чтобы добавить вновь созданный EntityObject в контекст, и после этого я вызываю SaveChanges.
Я получаю UpdateException: прерывание из-за нарушения ограничения PRIMARY KEY должен быть уникальным. Я вижу, что свойство первичного ключа всегда имеет значение 0, хотя оно должно быть следующим доступным значением в базе данных, верно? Я проверил, что в базе данных поле первичного ключа - автоинкремент.
Что я должен сделать, чтобы EF дал мне временный EntityKey?
1 ответ
EF не создает временные ключи для вас. Вам нужно будет сгенерировать временный ключ самостоятельно.
Что вы можете сделать: добавить свойство в вашей модели, украшенной [NotMapped]
приписывать. При создании объекта это значение должно быть инициализировано значением. Guids
решить проблему точно. Вы просто должны использовать Guid.NewGuid()
создать временный ключ для вас.
[NotMapped]
гарантирует, что поле не будет сохранено в базе данных.