【问题标题】: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