0

我正在支持一个应用程序,我们需要在其中迁移代码首先生成的数据库。更改是将三个属性(都在同一个表/实体上)从字符串修改为可以为空的小数。

这样做的部分要求是我需要将更改输出到 SQL 文件,因为我们将补丁部署到我们的客户端,该客户端也在生产中托管产品。

有人告诉我这是可能的,但我不确定该怎么做。

问题:我如何首先使用 EF 代码将数据库表迁移为具有可为空的小数而不是字符串,并将更改输出到 SQL 文件。我假设当前列中的所有值都可以转换为小数,但如果不是,那将如何改变复杂性?

4

1 回答 1

0

如果我的要求是正确的,那么您需要创建一个迁移,然后运行

Update-Database -Script

这将创建一个 sql 脚本,该脚本将针对数据库运行以更新结构。

还将更新 DB 结构,并Update-Database -Verbose输出 SQL 运行。

如果需要保留数据,也可以直接在迁移脚本中运行 SQL:

public partial class RenameColumn : DbMigration
{
    public override void Up()
    {
       Sql("update blah...");
    }

    public override void Down()
    {
      Sql("drop table bobby");
    }

在那里你可以做任何你需要做的事情来保存数据:添加临时列/表,在那里复制原始数据,更改列类型,将数据转换为所需的格式并将其复制到新列,清理。

如果您在迁移中有 Sql 命令,当您运行时Update-Database -Script,它将为您提供组合脚本 - 脚手架迁移脚本和您手动编写的脚本。

于 2012-09-19T15:16:06.567 回答