2014-01-29 5 views
0

Из следующего кода я получаю сообщение об ошибке, что @StartDate не подается, однако пошаговый два параметров по диапазону дат имеет действительное значение:Хранимая процедура ожидает параметр, который передается

SqlParameter[] ps = new SqlParameter[] 
{ 
    new SqlParameter("@StartDate", startDate), 
    new SqlParameter("@EndDate", endDate) 
}; 

List<AttendanceReportViewModel> res = db.Database.SqlQuery<AttendanceReportViewModel>(Local.queries["AttendanceReport"], ps).ToList(); 

return res; 

Хранимую процедура:

ALTER PROCEDURE [dbo].[GetAttendanceReport] 
    @StartDate datetime, 
    @EndDate datetime 
AS 
BEGIN 
    SET NOCOUNT ON; 

    exec [REMOTE_SRV].LWD.dbo.ReportAttendance_sp @StartDate = @StartDate, @EndDate = @EndDate; 
END 

Все работает нормально, когда я выполняю хранимую процедуру в SQL Server Management Studio, но не из приложения.

+0

Какой тип параметра вы referecing к? – cubitouch

+0

Оба параметра являются 'DateTime' – Lee

+0

Обе точки зрения TSQL и .NET? – cubitouch

ответ

1

Если ваш Local.queries["AttendanceReport"] выглядит примерно так:

Local.queries["AttendanceReport"] = "yourProc @StartDate, @EndDate" 

Тогда попробуйте это:

List<AttendanceReportViewModel> res = db.Database.SqlQuery<AttendanceReportViewModel(
    Local.queries["AttendanceReport"], 
    new SqlParameter("StartDate", startDate), 
    new SqlParameter("EndDate", endDate) 
).ToList(); 
+0

Это работает, спасибо. Мне также не хватало запятой между моими параметрами. – Lee

Смежные вопросы