Временный EntityKey не генерируется

Я создаю новый объект EntityObject, который не существует в базе данных (SQLite). Я заполняю свойства объекта и присоединяю его к родительскому объекту. Я не заполняю свойство первичного ключа, потому что, как я понимаю, EF должен автоматически генерировать мне временный ключ EntityKey. Затем я использую метод AddObject, чтобы добавить вновь созданный EntityObject в контекст, и после этого я вызываю SaveChanges.

Я получаю UpdateException: прерывание из-за нарушения ограничения PRIMARY KEY должен быть уникальным. Я вижу, что свойство первичного ключа всегда имеет значение 0, хотя оно должно быть следующим доступным значением в базе данных, верно? Я проверил, что в базе данных поле первичного ключа - автоинкремент.

Что я должен сделать, чтобы EF дал мне временный EntityKey?

1 ответ

EF не создает временные ключи для вас. Вам нужно будет сгенерировать временный ключ самостоятельно.

Что вы можете сделать: добавить свойство в вашей модели, украшенной [NotMapped] приписывать. При создании объекта это значение должно быть инициализировано значением. Guids решить проблему точно. Вы просто должны использовать Guid.NewGuid() создать временный ключ для вас.

[NotMapped] гарантирует, что поле не будет сохранено в базе данных.

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