【发布时间】:2019-10-17 00:01:47
【问题描述】:
我们目前正在进行一个项目,它使用 EF 命令自动生成迁移脚本,即 dotnet ef migrations add InitialCreate
除了自动创建的实体,我们还需要从文件中运行sql命令来生成存储过程,这是外部服务所需要的。
手动将以下内容添加到迁移中非常简单,并且可以在本地工作:
var sqlFiles =
Directory.GetFiles(
$"{AppDomain.CurrentDomain.BaseDirectory}/sql", "*.sql");
foreach (var sqlFile in sqlFiles)
{
migrationBuilder.Sql(File.ReadAllText(sqlFile));
}
但是,每次我们运行迁移构建器时都需要再次添加(这相当频繁,因为经常需要添加新模型等),并且在推送到我们的开发服务器时这不起作用,因为它们会自动运行迁移构建器和数据库更新命令。
有没有办法让 EF 在生成迁移时自动包含 sql 文件?或者一般来说有更好的方法?
【问题讨论】:
-
您对始终在应用启动时执行脚本感到满意吗?我们对从文件执行 SQL 脚本有非常相似的要求,但我们的应用程序总是循环通过 SQL 文件并在启动时执行它们。脚本总是以 DROP IF EXISTS 开始,然后创建。
-
这可能行得通,我需要与团队再次确认,但值得一试。
-
我设法安装了这样的东西,谢谢你的想法!它可以在本地工作,但没有机会针对开发服务器进行测试...
-
没问题!我在下面包含了我们自己的实现作为答案,以便您了解我们是如何实现它的。
标签: c# sql entity-framework