EF4.1 Code First: Сохраненная процедура с параметром вывода

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

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

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

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

Ответ 1

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;