Проблема:
Я пытаюсь создать таблицу с efcore в .netcore 2.2, используя codefirst с целочисленным первичным ключом с автоинкрементом, начинающимся с 0. Все найденные решения приводят либо к ошибке при добавлении миграции, либо к работе с автоинкрементом, но начать с int.MinValue.
Все следующие решения были опробованы отдельно, а не вместе:
Решение 1:
Ничего не делать. Просто позвольте efcore делать то, что по умолчанию.
-> Столбец автоматически увеличивается, но начинается с int.MinValue
Решение 2:
установка аннотации "[DatabaseGenerated(DatabaseGeneratedOption.Identity)]"
на первичном ключе.
-> Столбец автоматически увеличивается, но начинается с int.MinValue
Решение 3:
modelBuilder.Entity<User>()
.Property(u => u.Id)
.ValueGeneratedOnAdd();
-> Столбец автоматически увеличивается, но начинается с int.MinValue
Решение 4:
modelBuilder.HasSequence<int>("User_seq")
.StartsAt(0)
.IncrementsBy(1);
modelBuilder.Entity<User>()
.Property(u => u.Id)
.HasDefaultValueSql("NEXT VALUE FOR User_seq");
-> Добавление миграции завершается с ошибкой:
"You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'SEQUENCE User_seq START WITH 0 INCREMENT BY 1' at line 1"
Решение 5:
изменение типа данных Id на uint.
-> Столбец автоматически увеличивается, но начинается с int.MaxValue
Мой пользователь:
public class User
{
public int Id { get; set; }
public string FirstName{ get; set; }
public string LastName { get; set; }
}
Используется поставщик: Pomelo.EntityFrameworkCore.MySql
Чтобы прояснить мой вопрос: Как создать автоматически увеличивающийся столбец первичного ключа с целым числом, начиная с 0, увеличивая его на 1 в MariaDB, используя efcore codefirst?