c#使用存储过程版本控制的代码优先数据库迁移

c#使用存储过程版本控制的代码优先数据库迁移,c#,entity-framework,C#,Entity Framework,我们的项目使用EF代码优先的方法,并且它有相当多的存储过程 目前我们生成的DbMigration代码如下 var scripts = StoredProcedureMigrationHelper.GetSqlBatchFromEmbeddedResource("myStoredProc.sql"); foreach (var script in scripts) { Sql(script); } 问题是,每次更新存储的pr

我们的项目使用EF代码优先的方法,并且它有相当多的存储过程

目前我们生成的DbMigration代码如下

var scripts = StoredProcedureMigrationHelper.GetSqlBatchFromEmbeddedResource("myStoredProc.sql");
        foreach (var script in scripts)
        {
            Sql(script);
        }
问题是,每次更新存储的proc时,我都必须创建新的sql文件,其名称约定类似于“myStroedProc_versionX”。它正在工作,但失去了版本控制的好处,例如显示版本之间的差异


有没有一种方法/不同的方法可以先在代码中使用版本控制更新存储的proc?

一种更健壮、更灵活的方法可以是先使用EF数据库,然后使用Sql Server数据工具(SSDT)对数据库建模。通过在解决方案中创建数据库项目,您可以构建dacpac并将其应用于SQL Server实例,以将架构更新到所需的状态。

免责声明:我是Redgate Software的产品经理,是

如果您有随ReadyRoll Core edition附带的Visual Studio 2017 Enterprise,则可以切换到为数据库部署使用基于SQL的迁移。这将允许您在模式更改的同时包括存储过程的部署,同时仍然允许您使用EF CodeFirst进行建模

您可以在ReadyRoll文档中阅读有关此方法的更多信息:


请注意,本文使用了ReadyRoll的可编程对象功能,它仅包含在ReadyRoll的Pro版本中。或者,您可以将存储过程编写为部署后脚本(尽管这会导致脚本在每次部署时运行,而不仅仅是在每次更改时运行)。

这与使用;#创建过程相同吗?我还看到EF在db first model creation中找不到多个版本的proc。