You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Visual Studio中为SQL插入脚本创建EF Code-First迁移?

在EF Code-First中集成自定义条件插入SQL脚本的实现方法

步骤1:创建空迁移文件

打开Visual Studio的程序包管理器控制台,执行以下命令创建一个不包含模型变更的空迁移:

Add-Migration AddDepartmentsSeedData -IgnoreChanges
  • AddDepartmentsSeedData 是迁移的名称,建议用能清晰描述脚本用途的名称
  • -IgnoreChanges 参数告诉EF忽略当前模型与数据库的差异,仅生成空的迁移类文件

步骤2:编辑迁移类,添加自定义SQL脚本

在项目的Migrations文件夹中找到刚生成的迁移文件(文件名格式为{时间戳}_AddDepartmentsSeedData.cs),打开后在Up方法中通过Sql()方法嵌入你的条件插入语句:

public partial class AddDepartmentsSeedData : DbMigration
{
    public override void Up()
    {
        // 单条条件插入语句
        Sql(@"INSERT INTO Departments (Number, [Name])
              SELECT 3, 'TOPS'
              WHERE NOT EXISTS (SELECT Number FROM Departments
                                WHERE Number = 3)");

        // 多条语句可重复调用Sql()方法
        Sql(@"INSERT INTO Departments (Number, [Name])
              SELECT 4, 'HR'
              WHERE NOT EXISTS (SELECT Number FROM Departments
                                WHERE Number = 4)");
    }

    public override void Down()
    {
        // 可选:如需支持回滚操作,在此添加对应的数据删除语句
        // Sql("DELETE FROM Departments WHERE Number IN (3, 4)");
    }
}

步骤3:执行迁移

其他开发者只需在程序包管理器控制台中执行以下命令,即可让EF自动运行该迁移中的SQL脚本:

Update-Database

注意事项

  • 确保SQL语句与目标数据库兼容(比如SQL Server的语法在其他数据库中可能需要调整)
  • Down方法用于回滚迁移,若不需要回滚可留空,但建议根据实际需求添加对应的反向操作
  • 迁移名称要具备可读性,便于后续维护时快速识别该迁移的用途

内容的提问来源于stack exchange,提问作者bilpor

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 07:47:05