Свойство "BookId" типа объекта "Библиотека" имеет временное значение. Либо установите постоянное значение явно, либо убедитесь, что база данных
Когда я использую Entity Framework Core и начальные данные с миграцией, у меня появляется эта ошибка:
Свойство "BookId" типа объекта "Библиотека" имеет временное значение. Либо задайте постоянное значение явно, либо убедитесь, что база данных настроена для генерации значений для этого свойства.
3 ответа
Сообщение означает, что вы указали значение для своего ключа, который не существовал, если у вас есть зависимости с ForeignKey.
У меня было такое же исключение, когда у меня был уникальный индекс, AddRange не удалось выполнить уникальный индекс, а затем внутри блока исключения catch была попытка удалить всю вставленную коллекцию. (Не мой код, но мне пришлось его исправить:-))
Пример кода (упрощенный):
try {
context.AddRange(users); // List<User>, has property List<Contact>
context.SaveChanges(); // throws exception on unique index
} catch (Exception ex) {
context.RemoveRange(users); // this throws exception "The property 'UserID' on entity type 'Contact' has a temporary value"
throw;
}
Сообщение об ошибке может ввести в заблуждение и создать путаницу, сначала я подумал, что это из-за настройки базы данных.
Я столкнулся с этой ошибкой, когда (по ошибке) дважды добавил один и тот же объект в список, обновил диапазон контекста с добавленными / измененными значениями и сохранил обратно в базу данных:
Например:
list = _context.SomeList.ToList();
var obj = new Obj();
list.Add(obj);
.......
list.Add(obj); //<- second add of the same object
.......
_context.UpdateRange(list);
_context.SaveChanges(); //<- error