如何首先通过EF代码从存储过程中检索输出参数

时间:2016-09-16 08:32:42

标签: c# entity-framework stored-procedures

我是EF新手并首先使用EF代码。刚刚得到一个链接https://code.msdn.microsoft.com/How-to-retrieve-output-e85526ba,它显示了如何首先使用EF db的读输出类型参数。所以任何人都告诉我如何首先通过EF代码从存储过程中检索输出参数?

如果可能的话,请给我一些小样本代码或将我重定向到相关文章。

感谢

我得到了一个解决方案

var outParam = new SqlParameter();
outParam.ParameterName = "TotalRows";
outParam.SqlDbType = SqlDbType.Int;
outParam.ParameterDirection = ParameterDirection.Output;

var data = dbContext.Database.SqlQuery<MyType>("sp_search @SearchTerm, @MaxRows, @TotalRows OUT", 
               new SqlParameter("SearchTerm", searchTerm), 
               new SqlParameter("MaxRows", maxRows),
               outParam);
var result = data.ToList();
totalRows = (int)outParam.Value;

2 个答案:

答案 0 :(得分:6)

要检索存储过程调用的数据,可以使用以下

using(var db = new YourConext())
{
       var details = db.Database.SqlQuery<YourType>("exec YourProc @p", 
                      new SqlParameter("@p", YourValue));
}

YourType :可能是int或string或long,甚至是ComplexType

@p :如果存储过程有参数,您可以根据需要从参数中定义

如果您需要有关SqlQuery的更多信息,可以查看以下内容

  1. Writing SQL queries for entities
  2. Entity Framework Code First and Stored Procedures
  3. 希望这会对你有所帮助

答案 1 :(得分:0)

这样我们也可以在不使用using (var context = new BloggingContext()) { var blogId = 1; var blogs = context.Blogs.SqlQuery("dbo.GetBlogById @p0", blogId).Single(); } 命令的情况下调用存储过程。

           // Owin Middleware3 - Cookie Authentication Middleware

            app.UseCookieAuthentication(new CookieAuthenticationOptions
            {
                LoginPath = new PathString("/Account/Login"),
                AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
                ExpireTimeSpan = TimeSpan.FromMinutes(timeout),
                SlidingExpiration = true

                }
            });

您还可以使用以下语法将参数传递给存储过程:

.div_2 {
    height: 200px;
}
.placeholder {
    height: 200px;
    width: 100%;
}