2012-04-16 11 views
0

誰かがこのことを私に説明してくれますか?コードでMVC C#パラメータ付きのストアドプロシージャを呼び出すと、最初のパラメータが認識されません

ALTER proc [dbo].[Invoice_GetHomePageInvoices] (
     @AreaIdList varchar(max) 
,  @FinancialYearStartDate datetime = null 
,  @FinancialYearEndDate datetime = null 
) as 

が、私はこのようにそれを呼び出すようにしようとしている:

Procedure or function 'Invoice_GetHomePageInvoices' expects parameter '@AreaIdList', which was not supplied.

が何を言う:私はこのエラーを取得してい

var areasString = new SqlParameter("AreaIdList", "1,2"); 
var startDate = new SqlParameter("FinancialYearStartDate", financialYear.StartDate); 
var endDate = new SqlParameter("FinancialYearEndDate", financialYear.EndDate); 

return _db.Database.SqlQuery<HomePageInvoice>("Invoice_GetHomePageInvoices", areasString, startDate, endDate); 

私は、このストアドプロシージャがありますか?私はそのパラメータを提供しました。誰かが私に修正方法のいくつかの洞察を教えてくれますか?

+1

変数名の前に@記号を置こうとしましたか? –

+0

ちょうど試してみました、いいえ – AnonyMouse

答えて

3

あなたはそうのようにそれを呼び出す必要があります:

var areasString = new SqlParameter("AreaIdList", "1,2");    
var startDate = new SqlParameter("FinancialYearStartDate", financialYear.StartDate);    
var endDate = new SqlParameter("FinancialYearEndDate", financialYear.EndDate);    
return _db.Database.SqlQuery<HomePageInvoice>("EXEC Invoice_GetHomePageInvoices @AreaIdList, @FinancialYearStartDate, @FinancialYearEndDate", areasString, startDate, endDate); 

私はあなたのように、あまりにも少しそれを短縮することができ信じる:

return _db.Database.SqlQuery<HomePageInvoice>("EXEC Invoice_GetHomePageInvoices {0}, {1}, {2}", "1,2", financialYear.StartDate, financialYear.EndDate); 
+0

私はここで働くために短縮された答えを得ることしかできませんでした。他には何も機能していなかった。また、パラメータを指定する際には、ストアドプロシージャ内にデフォルトがあったとしても、それらをすべて指定する必要がありました。 –

0

これはおそらく、パラメータ値を期待しています:

return _db.Database.SqlQuery<HomePageInvoice>("Invoice_GetHomePageInvoices", areasString.Value, startDate.Value, endDate.Value) 
+0

値を渡すだけで、パラメータを作成するのは何でしょうか。とにかく動作しません。 – AnonyMouse

+0

あなたが正しいです、私はちょうどあなたが構文が混ざっていると思った。ここでDAABを使っていますか? – Tuan

関連する問題