我们可以使用代码优先迁移来运行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。 你可以直接使用它。
- NewtonSoft Json DeserializeObject空Guid字段
- 使用Google Drive API v3移动文件
- LINQ to SQL – 如何有效地对多个条件进行AND或OR搜索
- 如何在Visual Studio 2012上配置或设置带有ASP.NET(包含MVC)C#的Log4Net
- C#MVC CMS – 自定义远程validation
- 如何使用数据注释来validation输入的特定类型
- ASP.NET MVC:在不影响性能的情况下路由自定义slug
- 在View中创建HiddenFor IEnumerable
- 不支持每种类型的多个对象集。 对象集IdentityUsers’和用户都可以包含类型的实例