【问题标题】:Run stored procedure to populate an existing table from an MVC Controller运行存储过程以从 MVC 控制器填充现有表
【发布时间】:2019-06-05 22:22:09
【问题描述】:

以下 SQL 代码在 [QTY] 数据库中完美运行。它会删除 [Table1] 中的所有行,然后运行存储过程 [test] 并将结果插入 [Table1]。

我希望能够从 MVC 控制器运行此代码。我怎样才能做到这一点?谢谢。

USE [QTY]
GO

DECLARE @return_value int

Delete from Table1

INSERT INTO Table1

EXEC    @return_value = [dbo].[test]
        @Month = N'M4',
        @Forecast = '2019-04-30'

SELECT  'Return Value' = @return_value

GO

【问题讨论】:

    标签: sql-server asp.net-core stored-procedures model-view-controller


    【解决方案1】:

    尝试使用FromSql 方法,该方法使您能够传入要对数据库执行的SQL 命令,以返回DbSet 表示的类型的实例。

    // Format string
    var author = db.Authors.FromSql("SELECT * From Authors Where AuthorId = {0}", id).FirstOrDefault();
    // String interpolation
    var author = db.Authors.FromSql($"SELECT * From Authors Where AuthorId = {id}").FirstOrDefault();
    

    DbContext 公开了一个 Database 属性,其中包含一个名为 ExecuteSqlCommand 的方法。此方法返回一个整数,指定受传递给它的 SQL 语句影响的行数。

    using(var context = new SampleContext())
    { 
       var commandText = "INSERT Categories (CategoryName) VALUES (@CategoryName)";
       var name = new SqlParameter("@CategoryName", "Test");
       context.Database.ExecuteSqlCommand(commandText, name);
    }
    

    您可以花一些时间学习教程Executing Raw SQL Queries

    【讨论】:

      猜你喜欢
      • 2021-08-31
      • 2020-08-24
      • 2010-12-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-12
      • 1970-01-01
      相关资源
      最近更新 更多