首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在MVC/EF/LINQ中执行存储过程并获得返回结果

如何在MVC/EF/LINQ中执行存储过程并获得返回结果
EN

Stack Overflow用户
提问于 2013-10-02 17:23:08
回答 4查看 58.6K关注 0票数 9

有谁能指导我如何在ASP.NET MVC / EF中执行Server存储过程?

申请并得到结果?

Server存储过程

代码语言:javascript
复制
 CREATE PROCEDURE dbo.StoredProcedure2 AS
     declare @parameter2 int
     SET @parameter2 = 4

     RETURN @parameter2 

MVC代码

代码语言:javascript
复制
 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);
}
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-10-02 18:11:13

您的问题是:您正在从存储过程返回值(使用RETURN @paramter2),但您的.NET代码正在尝试读取结果集;在存储过程中使用SELECT .....语句将“返回”

因此,将存储过程更改为:

代码语言:javascript
复制
CREATE PROCEDURE dbo.StoredProcedure2 AS
     declare @parameter2 int
     SET @parameter2 = 4

     SELECT @parameter2 

然后,您的.NET代码应该工作得很好。

RETURN语句应该仅用于状态码,并且只能返回INT值。如果要使用该方法,则必须为存储过程定义一个带有SqlParameterDirection.ReturnValue

票数 10
EN

Stack Overflow用户

发布于 2013-10-02 17:32:50

关于如何将Stored Procedure映射到您的上下文,请查看此官方文档:

实体框架中的存储过程

在映射之后,您可以这样调用Stored Procedure

代码语言:javascript
复制
var val = _context.StoredProcedure2();
票数 4
EN

Stack Overflow用户

发布于 2013-10-02 17:57:18

一种选择是简单地这样做:

代码语言:javascript
复制
MyReturnEntity ret = context.Database
         .SqlQuery<MyReturnEntity>("exec myStoredProc ?, ?", param1, parm2);
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19142976

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档