ef核心使用系统日历格式生成迁移名称。
Windows上格里高利历的标准迁移名称示例:
20190206144020_MIGRATION-NAME
但是如果Windows的日期格式不是Gregorian,就像波斯日历一样,ef核心迁移名称会生成如下内容:
13971114210223_MIGRATION-NAME
在团队项目中,我们不能使用这两种格式,因为它正在改变迁移的顺序。
有没有办法解决这个问题,而无需更改Windows日历格式或手动重命名迁移?
版本:EF核心2.2
这只是MigrationsIdGenerator类中的一个错误,目前最新的EF Core 2.2.4 - 在last line的GenerateId
方法:
return timestamp.ToString(Format) + "_" + name;
他们只是忘了将CultureInfo.InvariantCulture
传递给DateTime.Format
方法。
它是already fixed in the current code(我相信EF Core 3.0),所以你要么等待它,要么将当前代码复制/粘贴到你的项目中(将类重命名为FixedMigrationsIdGenerator
),然后在你的DbContext
派生类中,覆盖OnConfiguring
并添加以下(有必要的using
s):
optionsBuilder.ReplaceService<IMigrationsIdGenerator, FixedMigrationsIdGenerator>();