Использование EntityFramework Core 2.2 для заполнения данных, имеющих ключ, сгенерированный базой данных
Я использую EF Core 2.2, использую код в первую очередь.
У меня есть класс сущности:
public class Client
{
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
[Key]
public int ClientID { get; set; }
public string Name { get; set; }
}
и я отправляю свои данные так:
var client = new Client { Name = "TestClient"};
modelBuilder.Entity<Client>().HasData(client);
Но я получаю сообщение об ошибке при попытке добавить миграцию:
Начальный объект для типа объекта "Клиент" не может быть добавлен, поскольку для свойства "ClientID" требуется ненулевое значение. Рассмотрите возможность предоставления отрицательного значения, чтобы избежать коллизий с не начальными данными.
ClientID
должен быть сгенерирован автоматически, и я не хочу его указывать. Есть ли обходной путь к этому или эта функциональность просто еще не реализована?
1 ответ
Решение
С начальными данными, вы должны указать ключ. В противном случае он не будет знать, какая запись должна быть там. Это задокументировано здесь.