изменить базовый код структуры имени первого формата имени миграции - PullRequest
1 голос
/ 26 апреля 2019

ef ядро, использующее формат системного календаря для генерации имен миграции.

пример стандартного имени миграции для григорианского календаря в windows:

20190206144020_MIGRATION-NAME

Но если формат даты в Windows отличается от григорианского, например, в персидском календаре, имя миграции ef core генерирует что-то вроде:

13971114210223_MIGRATION-NAME

в командном проекте мы не можем использовать оба формата, потому что он меняет порядок миграций.

Есть ли способ исправить эту проблему, не меняя формат календаря Windows или не переименовывая перенос вручную?

версия: EF core 2.2

1 Ответ

1 голос
/ 26 апреля 2019

Это просто ошибка в классе MigrationsIdGenerator для самого последнего на данный момент EF Core 2.2.4 - в последней строке из GenerateId метода:

return timestamp.ToString(Format) + "_" + name;

они просто забыли передать CultureInfo.InvariantCulture методу DateTime.Format.

Это уже исправлено в текущем коде (я полагаю, для EF Core 3.0), так что вы либо ждете его, либо копируете / вставляете текущий код в свой проект (переименуйте класс, чтобы сказать FixedMigrationsIdGenerator), а затем внутри вашего DbContext производного класса переопределите OnConfiguring и добавьте следующее (с необходимыми using s):

optionsBuilder.ReplaceService<IMigrationsIdGenerator, FixedMigrationsIdGenerator>();
...