Как сначала получить исходный параметр из хранимой процедуры с помощью 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();
}