【问题标题】:Roll Back Migration Error Implicit conversion from data type datetime to int is not allowed. Use the CONVERT function to run this query回滚迁移错误 不允许从数据类型 datetime 到 int 的隐式转换。使用 CONVERT 函数运行此查询
【发布时间】:2019-05-16 16:57:59
【问题描述】:

我已经使用本地数据库上已应用的迁移更新了暂存数据库。但是一些迁移并没有对数据库进行更改,尽管 update-database 过程顺利进行并表示更改已应用。

我已经把输出放在这个file

虽然输出清楚地表明已应用更改,但当我检查数据库时,ExportCSV 和 ExportCSV2 都明显缺少字段 M9、M10 A4-A20,添加了一些字段如 TI1 或 I1,但仍有一些字段。

我试图回滚到最后一个良好的迁移错误并想在暂存数据库上运行 add-migration 但我得到了这个

    Error Number:257,State:3,Class:16
Implicit conversion from data type datetime to int is not allowed. Use the CONVERT function to run this query.

首先,如果我可以回滚数据库,那就太好了。

任何建议将不胜感激!

【问题讨论】:

  • 您需要授予权限才能查看您的共享文件。照原样,我无法查看它。
  • 可能在您的脚本中将 int 字段值转换为日期时间,因为您遇到了这个问题。如 ISNULL(IntField, GETDATE()) 或 CAST(IntField to datetime) 等。
  • @LaughingVergil Vergil 抱歉,没有注意到只有我的公司可以共享文档。更改了您现在可以看到的链接。
  • @NP007 实际上数据库中的日期时间是日期时间,当我回滚迁移时试图将其转换为 int。向上方法AlterColumn("dbo.ExportCSV", "P1FanContacted", c => c.DateTime()); AlterColumn("dbo.ExportCSV", "P2FanContacted", c => c.DateTime()); AlterColumn("dbo.ExportCSV", "P3FanContacted", c => c.DateTime()); 向下方法AlterColumn("dbo.ExportCSV", "P3FanContacted", c => c.Int()); AlterColumn("dbo.ExportCSV", "P2FanContacted", c => c.Int()); AlterColumn("dbo.ExportCSV", "P1FanContacted", c => c.Int());

标签: c# sql-server ef-code-first entity-framework-migrations


【解决方案1】:

我已经按照这个过程解决了这个问题。

注释dbcontext中的模型,通过代码优先的方法删除两个有问题的表(add-migration而不是update-database)。

取消注释表,通过 add-migration 而不是 update-database 重新创建它们。

也许更好的方法是更新临时数据库或实时数据库,而不是先运行迁移以从模型创建迁移。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多