Код EF4.1 первый: хранимая процедура с выходным параметром - PullRequest
11 голосов
/ 18 ноября 2011

Сначала я использую Entity Framework 4.1 Code.Я хочу вызвать хранимую процедуру с выходным параметром и получить значение этого выходного параметра в дополнение к строго типизированному набору результатов.Это функция поиска с такой подписью

public IEnumerable<MyType> Search(int maxRows, out int totalRows, string searchTerm) { ... }

Я обнаружил множество подсказок для «Импорта функций», но это не совместимо с Code First.Я могу вызывать хранимые процедуры, используя Database.SqlQuery (...), но это не работает с выходными параметрами.

Можно ли вообще решить эту проблему с помощью кода EF4.1 First?

1 Ответ

26 голосов
/ 18 ноября 2011

SqlQuery работает с выходными параметрами, но вы должны правильно определить запрос и настройку SQL SqlParameter s.Попробуйте что-то вроде:

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;
...