Я использую подход EFCore 3 «сначала код» с миграциями. Создал новую базу данных в MySQL 5.7 и применил старые миграции, используя dotnet ef database update
. Все таблицы созданы и в __EFMigrationsHistory
есть записи. Затем я добавил [MaxLength(2000)]
в поле RepairHistory.comment
.
Перед созданием миграции ContextModelSnapshot
содержит следующее определение:
b.Property<string>("Comment")
.HasColumnName("comment")
.HasColumnType("varchar(1000)")
.HasAnnotation("MySql:CharSet", "utf8")
.HasAnnotation("MySql:Collation", "utf8_unicode_ci");
Ожидаемое поведение:
Вызов dotnet ef migrations add ExtendComment
создаст файлы миграции с изменением типа столбца на "varchar(2000)"
, ContextModelSnapshot
изменит строку .HasColumnType("varchar(1000)")
на .HasColumnType("varchar(2000)")
.
Реальное поведение:
Вызов dotnet ef migrations add ExtendComment
создает пустые файлы миграции. ContextModelSnapshot
изменяет определение поля неверно, вместо изменения типа столбца добавлено HasMaxLength
, что больше размера типа столбца.
b.Property<string>("Comment")
.HasColumnName("comment")
.HasColumnType("varchar(1000)")
.HasMaxLength(2000)
.HasAnnotation("MySql:CharSet", "utf8")
.HasAnnotation("MySql:Collation", "utf8_unicode_ci");
Что я сделал не так?