// PLAIN SQL
Sql("UPDATE dbo.Table SET Created = GETDATE()");
// FROM FILE
var sqlFile = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, @"Custom.sql");
Sql(File.ReadAllText(sqlFile));
public static class SqlFileTrigger {
public static string GetRawSql(string fileName) {
var baseDir = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Migrations"); // your default migrations folder
var filePath = Path.Combine(baseDir, fileName);
return File.ReadAllText(filePath);
}
}
6条答案
按热度按时间wrrgggsh1#
首先,您需要创建迁移。
然后,在生成的迁移文件中,您可以编写SQL。
那你就跑
n3h0vuf22#
我喜欢做的是将SQL脚本作为资源嵌入到程序集中,并使用
SqlResource
方法。我已经使用Visual Studio 2017 15.5.6测试了这种方法。首先,您需要创建一个迁移文件:
1.在Visual Studio中,确保将定义
DbContext
的项目设置为启动项目1.在Visual Studio中打开PMC:查看-〉其他窗口-〉程序包管理器控制台
1.在PMC中,将缺省项目设置为包含DbContext的项目
1.如果同时安装了EF core和EF 6.x:
EntityFramework\Add-Migration RunSqlScript
1.如果您只安装了EF 6.x:
Add-Migration RunSqlScript
在迁移文件夹中添加一个Sql脚本(我用与迁移文件相同的前缀命名它)
在文件属性窗口中,确保生成操作是“嵌入式资源”。注意,我们不需要复制到输出文件夹,因为SQL脚本将嵌入到程序集中。
更新
RunSqlScript
迁移中的Up方法希望这能帮上忙
l7wslrjt3#
像SQL一样,我们有另一个方法SqlFile。你可以直接使用它。
h7appiyu4#
对于.NET Core和EF Core,您可以在迁移中执行类似的操作
vuv7lop35#
1.可以使用包管理器控制台添加新迁移,如下所示:
1.然后在up方法中添加以下命令,其中包含要执行的命令:
bprjcwpo6#
有点晚了,但可能会有帮助。
您可以创建一个静态helper类,如下所示:
然后,使用类似的命名约定创建SQL文件,后跟“{migrationName}_Up.sql”和“{migrationName}_Down.sql”,例如:
例如,假设您创建的迁移命名为“
20230120230041_AddAuditingProperties.cs
“这样它们将被正确地分组到您的迁移
.cs
文件下。(您也可以为此创建一个单独的文件夹,但我通常更喜欢将它们堆叠起来,以便在需要时轻松检查)然后,您可以添加“
20230120230041_AddAuditingProperties_Up.sql
“以及“20230120230041_AddAuditingProperties_Down.sql
“(如果需要down sql)那么对于.NET EF:
适用于.NET核心EF核心
PS:作为一个侧记,如果你计划他们部署和运行在服务器上自动,请确保您右键单击那些创建的.sql文件,并设置“
Build Action
“为“Content
“和“Copy to Output Directory
“为“Copy always
“-我有问题之前,当他们没有设置。