私は、ストアプロシージャにアクセスしようとするリポジトリパターンパラメータ化されたクエリ '@QuotationNo varchar()、@ AgencyName varchar()、@ ContractS'は、提供されていないパラメータ '@QuotationNo'を要求します
以下コマンドここ
var reportFilterDb =
_iGenericReportProcRepository.ExecuteStoreProcFunction("StoreProcReport @QuotationNo, @AgencyName, @ContractStartDate, @ContractEndDate, @contractTerm",
new SqlParameter("QuotationNo", SqlDbType.VarChar) { Value = filter.QuotationNo },
new SqlParameter("AgencyName", SqlDbType.VarChar) { Value = filter.AgencyName },
new SqlParameter("ContractStartDate", SqlDbType.DateTime) { Value = filter.FContractStartDate },
new SqlParameter("ContractEndDate", SqlDbType.DateTime) { Value = filter.FContractEndDate },
new SqlParameter("contractTerm", SqlDbType.Int) { Value = filter.Term }
).ToList();
有する汎用リポジトリパターン
public virtual IEnumerable<T> ExecuteStoreProcFunction(string query, params object[] parameters)
{
return _entities.Database.SqlQuery<T>(query, parameters).ToList();
}
は、店舗手順構造
であります210CREATE PROCEDURE [dbo].[StoreProcReport]
@QuotationNo varchar(max) null,
@AgencyName varchar(max) null,
@ContractStartDate datetime null,
@ContractEndDate datetime null,
@contractTerm int null
AS
SET NOCOUNT ON;
SELECT con.Contract_AgencyName, con.Contract_EndDate, con.Contract_Id as 'ContractId', con.Contract_QuoteNo, con.Contract_StartDate,
ConSer.ContractService_Id, ConSer.Description,ConSer.MonthlyUnitPrice, ConSer.OrderEndDate, ConSer.OrderStartDate,ConSer.OrderTermMonths,
ConSer.Quantity, ConSer.TotalPrice
FROM Contract AS con join ContractService as ConSer on con.Contract_Id = ConSer.Contract_Id
WHERE (con.Contract_QuoteNo = @QuotationNo OR @QuotationNo IS NULL)
AND (con.Contract_AgencyName = @AgencyName OR @AgencyName IS NULL)
AND (con.Contract_StartDate = @ContractStartDate OR @ContractStartDate IS NULL)
AND (con.Contract_EndDate = @ContractEndDate OR @ContractEndDate IS NULL)
AND (ConSer.OrderTermMonths = @contractTerm OR @contractTerm IS NULL)
GO
私は、パラメータ化クエリ '(@QuotationNo VARCHAR()は、AgencyNameのVARCHAR()@、契約@'「パラメータを期待
としてエラーを取得して結果を実行することはできませんよ@QuotationNo 」、これ
'SqlParameter( "QuotationNoが"' SqlParameter 'すべきではない( "QuotationNo @"':代わりに、自動的にそのようなことを行いますDapperのようなツールを検討します? – David
同じエラーが発生しました –
ExecuteStoreProcFunctionは何ですか?ExecuteScalarなどのメソッドを使用してプロシージャを実行していますか? –