有谁能指导我如何在ASP.NET MVC / EF中执行Server存储过程?
申请并得到结果?
Server存储过程
CREATE PROCEDURE dbo.StoredProcedure2 AS
declare @parameter2 int
SET @parameter2 = 4
RETURN @parameter2 MVC代码
private readonly TestDatastoreContext _context = new TestDatastoreContext();
public ViewResult Index(string id)
{
ViewData["EnvironmentId"] = id;
using (_context)
{
_context.Database.Connection.Open();
var command = _context.Database.Connection.CreateCommand();
command.CommandText = "dbo.StoredProcedure2";
command.CommandType = System.Data.CommandType.StoredProcedure;
var test = (command.ExecuteScalar());
}
var bigView = new BigViewModel
{
VersionsModel = _context.Versions.ToList(),
EnvironmentViewModel = _context.Environments.ToList(),
};
return View(model: bigView);
}发布于 2013-10-02 18:11:13
您的问题是:您正在从存储过程返回值(使用RETURN @paramter2),但您的.NET代码正在尝试读取结果集;在存储过程中使用SELECT .....语句将“返回”
因此,将存储过程更改为:
CREATE PROCEDURE dbo.StoredProcedure2 AS
declare @parameter2 int
SET @parameter2 = 4
SELECT @parameter2 然后,您的.NET代码应该工作得很好。
RETURN语句应该仅用于状态码,并且只能返回INT值。如果要使用该方法,则必须为存储过程定义一个带有SqlParameter的Direction.ReturnValue
发布于 2013-10-02 17:32:50
关于如何将Stored Procedure映射到您的上下文,请查看此官方文档:
实体框架中的存储过程
在映射之后,您可以这样调用Stored Procedure:
var val = _context.StoredProcedure2();发布于 2013-10-02 17:57:18
一种选择是简单地这样做:
MyReturnEntity ret = context.Database
.SqlQuery<MyReturnEntity>("exec myStoredProc ?, ?", param1, parm2);https://stackoverflow.com/questions/19142976
复制相似问题