Как создать столбец идентификатора с автоинкрементом в Entity Framework Core?
Очевидно, что я могу сделать это, используя свободный API для EF6, например.
Как создать столбец идентификатора с автоинкрементом в Entity Framework Core?
Очевидно, что я могу сделать это, используя свободный API для EF6, например.
Поскольку документации EF7 очень мало, многое из того, что мы знаем, мы должны извлечь из исходных или модульных тестов. Согласно следующим двум модульным тестам в источнике EF7...
Вы можете настроить свойство для удостоверения следующим образом:
b.Property(e => e.Id).ForSqlServer().UseIdentity();
И вы должны настроить свойство для последовательностей следующим образом:
ForSqlServer().UseSequence();
URL-адреса изменились из-за реорганизации ядра aspnet, и методы также изменились с тех пор, как об этом впервые спросили.
if (_useSequence)
{
b.Property(e => e.Identifier).ForSqlServerUseSequenceHiLo();
}
else
{
b.Property(e => e.Identifier).UseSqlServerIdentityColumn();
}
Возможно, эти URL-адреса могут снова измениться (именно поэтому я включил соответствующий код), но просто смехотворно просто посмотреть на URL-адрес и перейти на сайт и выяснить, что такое новый URL-адрес.
На самом деле, весь смысл моего ответа в том, что вы можете сами разобраться в этом, просто взглянув на модульные тесты в исходном коде на GitHub. Вам не нужно, чтобы кто-то кормил его ложкой.
ОБНОВЛЕНИЕ: Обновлены ссылки на версию 2.1 (все еще работает для 1.1 и 2.0)
В последней версии EF7 появился новый метод расширения для установки столбца идентификаторов
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<MyEntity>(b =>
{
b.HasKey(e => e.Identifier);
b.Property(e => e.Identifier).ValueGeneratedOnAdd();
});
}
С последними битами EF Core 1.0 и выше вы должны использовать
builder.Entity<ApplicationUser>().Property<int>(nameof(ApplicationUser.AccountNo))
.UseSqlServerIdentityColumn()
Вот как это сделать явно в случае, если вы хотите ИЛИ это не поведение по умолчанию.
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<MyEntity>(b =>
{
b.Key(e => e.Identifier);
b.Property(e => e.Identifier).ForSqlServer().UseIdentity();
}
}