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

Create stored procedure in seeding of ASP.NET Boilerplate

如何在 ASP.NET 样板中播种期间 运行 SQL 命令?

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

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

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

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

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

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