更改实体框架核心代码第一个迁移名称格式

问题描述 投票:1回答:1

ef核心使用系统日历格式生成迁移名称。

Windows上格里高利历的标准迁移名称示例:

20190206144020_MIGRATION-NAME

但是如果Windows的日期格式不是Gregorian,就像波斯日历一样,ef核心迁移名称会生成如下内容:

13971114210223_MIGRATION-NAME

在团队项目中,我们不能使用这两种格式,因为它正在改变迁移的顺序。

有没有办法解决这个问题,而无需更改Windows日历格式或手动重命名迁移?

版本:EF核心2.2

entity-framework-core ef-migrations
1个回答
1
投票

这只是MigrationsIdGenerator类中的一个错误,目前最新的EF Core 2.2.4 - 在last lineGenerateId方法:

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

他们只是忘了将CultureInfo.InvariantCulture传递给DateTime.Format方法。

它是already fixed in the current code(我相信EF Core 3.0),所以你要么等待它,要么将当前代码复制/粘贴到你的项目中(将类重命名为FixedMigrationsIdGenerator),然后在你的DbContext派生类中,覆盖OnConfiguring并添加以下(有必要的usings):

optionsBuilder.ReplaceService<IMigrationsIdGenerator, FixedMigrationsIdGenerator>();
© www.soinside.com 2019 - 2024. All rights reserved.