在 ASP.NET 样板的种子中创建存储过程

Posted

技术标签:

【中文标题】在 ASP.NET 样板的种子中创建存储过程【英文标题】:Create stored procedure in seeding of ASP.NET Boilerplate 【发布时间】:2017-08-22 10:04:08 【问题描述】:

如何在 ASP.NET Boilerplate 上播种期间运行 SQL 命令?

我需要运行一个复杂的查询,所以我认为使用存储过程将计算卸载到 SQL Server 上会更容易。

我已经成功创建了一个自定义存储库,它注入 ActiveTransactionProvider 并使用 DbContext 中的 ADO.NET 来运行查询。

现在我想检查存储过程是否存在,如果不存在,则在后端启动时在种子中创建它。

我尝试使用传递的 DbContext 中的 ADO.NET SeedHelper,但我得到一个异常,即我需要一个事务,即使事务范围已在帮助程序中设置为抑制。我看不到在播种期间可以在哪里注入活动事务提供程序,所以我被卡住了。

【问题讨论】:

【参考方案1】:

您需要使用代码优先迁移来更改数据库架构(包括创建 SP)。只需使用 add-migration 命令,然后在其中执行 SQL(如 Code First Migrations and Stored Procedures)。

Seed 仅用于添加/更新现有实体。它只在应用程序启动时运行。 EF Core 还没有原生种子机制(据我所知)。

【讨论】:

以上是关于在 ASP.NET 样板的种子中创建存储过程的主要内容,如果未能解决你的问题,请参考以下文章

在 ASP.net 中运行时调用存储过程

在 ASP.NET 中使用存储过程进行更新

执行sql脚本,不等待完成

Oracle存储过程创建临时表,插入数据后,怎么返回临时表数据,并在asp.net中接收到datatable中

在存储过程中创建临时表

在 Informix 中创建 TEMP 存储过程