1

誰かが私にこれを説明してもらえますか? 私はこのストアドプロシージャを持っています:

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

コードでは、次のように呼び出そうとしています:

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

次のエラーが表示されます。

プロシージャまたは関数 'Invoice_GetHomePageInvoices' は、指定されていないパラメーター '@AreaIdList' を予期しています。

何だって?私はそのパラメータを提供しました。誰かが修正方法についての洞察を教えてもらえますか?

4

2 に答える 2

5

次のように呼び出す必要があります。

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);
于 2012-04-17T00:08:57.823 に答える
0

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

return _db.Database.SqlQuery<HomePageInvoice>("Invoice_GetHomePageInvoices", areasString.Value, startDate.Value, endDate.Value)
于 2012-04-16T22:55:43.730 に答える