Как сначала получить исходный параметр из хранимой процедуры с помощью EF-кода

Я новичок в 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;

Ответ 1

Чтобы получить данные для вызова хранимой процедуры, вы можете использовать следующие

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, вы можете проверить следующие

Надеюсь, это поможет вам

Ответ 2

Таким образом, мы также можем вызвать хранимую процедуру без использования команды exec.

using (var context = new BloggingContext()) 
{ 
    var blogs = context.Blogs.SqlQuery("dbo.GetBlogs").ToList(); 
}

Вы также можете передать параметры хранимой процедуре, используя следующий синтаксис:

using (var context = new BloggingContext()) 
{ 
    var blogId = 1; 

    var blogs = context.Blogs.SqlQuery("dbo.GetBlogById @p0", blogId).Single(); 
}