在 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 样板的种子中创建存储过程的主要内容,如果未能解决你的问题,请参考以下文章