我们首先使用Entity Framework 6代码。我们最近决定将数据库中的日期时间格式转换为datetime2格式。我们的数据库目前包含大量数据和大约262个表。
通过Google搜索,我发现this answer描述了如何迁移到datetime2:
modelBuilder.Properties<DateTime>()
.Configure(c => c.HasColumnType("datetime2"));
所以我将这部分代码放在OnModelCreating
方法中。然后我运行了Add-Migration commend,它创建了一个包含大量DropPrimaryKey
,AlterColumn
和AddPrimaryKey
行的Up方法,如下例所示:
然后我运行了Update-Database commend并得到了以下错误消息:
对象&#39; DF__AdminMessa__Date__353DDB1D&#39;取决于列&#39;日期&#39;。
ALTER TABLE ALTER COLUMN日期因一个或多个对象而失败 访问此列。
我猜这个错误是由于对表的约束造成的。 我知道我可以临时disable them并再次运行此脚本但是我们必须在约262个表上手动运行禁用约束的脚本。除此之外,我不知道在使用Code First时是否可以运行这样的纯脚本。
有没有正确的方法将现有数据库(带数据)迁移到EF Code First中的datetime2?