我们可以使用代码优先迁移来运行SQL脚本吗?
我们可以使用代码优先迁移来运行sql脚本吗?
我是新手代码,如果我想在update-database命令迁移之前将我的更改保存到SQL脚本文件,是否可能?
如果可能,请提供完成工作的步骤。 此外,如果生成脚本,那么我是否可以使用迁移运行该脚本?
首先,您需要创建迁移。
Add-Migration RunSqlScript
然后在生成的迁移文件中,您可以编写SQL。
// PLAIN SQL Sql("UPDATE dbo.Table SET Created = GETDATE()"); // FROM FILE var sqlFile = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, @"Custom.sql"); Sql(File.ReadAllText(sqlFile));
然后你跑
Update-Database
我喜欢做的是将SQL脚本作为资源嵌入到程序SqlResource
并使用SqlResource
方法。 我已经使用Visual Studio 2017 15.5.6测试了这种方法。
首先,您需要创建一个迁移文件:
- 在Visual Studio中,确保将定义
DbContext
的项目设置为启动项目 - 在Visual Studio中打开PMC:查看 – >其他Windows – >程序包管理器控制台
- 在PMC中将默认项目设置为包含DbContext的项目
-
如果您同时安装了EF核心和EF 6.x:
EntityFramework\Add-Migration RunSqlScript
-
如果您只安装了EF 6.x:
Add-Migration RunSqlScript
在迁移文件夹中添加一个Sql脚本(我用与迁移文件相同的前缀命名它)
在文件属性窗口中,确保构建操作是“嵌入式资源”请注意,我们不需要复制到输出文件夹,因为sql脚本将嵌入到程序集中。
在RunSqlScript
迁移中更新Up方法
public override void Up() { string sqlResName = typeof(RunSqlScript).Namespace + ".201801310940543_RunSqlScript.sql"; this.SqlResource(sqlResName ); }
我希望这有帮助
像SQL一样,我们有另一种方法SqlFile。 你可以直接使用它。
- 将Angularjs表达式/变量作为路径参数传递给asp.net mvc操作链接
- 在.NET MVC中,是否有一种简单的方法来检查我是否在主页上?
- 使用Entity Framework的Model上的DisplayName
- MVC3全球化:在模型绑定之前需要全局过滤
- 尝试激活’AuthController’时无法解析类型’Microsoft.AspNetCore.Identity.UserManager`的服务
- 如何将javascript对象传递给C#MVC 4控制器
- ASP.NET MVC cookie不能保存?
- MVC – 具有多个选择列表的控制器
- 使用MVC 5 RouteArea属性时,无法找到默认区域视图