2017-03-07 16 views
0
私は
var paramSortColumn = new SqlParameter("@SortColumn", SqlDbType.NVarChar, 200) { Value = SortColumn }; 
var paramSortOrder = new SqlParameter("@SortOrder", SqlDbType.NVarChar, 10) { Value = SortOrder }; 
var paramStartIndex = new SqlParameter("@StartIndex", SqlDbType.Int) { Value = filter.StartIndex - 1 }; 
var paramItemsPerPage = new SqlParameter("@ItemsPerPage", SqlDbType.Int) { Value = filter.ItemsPerPage }; 

var paramDealerBranchID = new SqlParameter("@DealerBranchIDs", SqlDbType.NVarChar){Value = selectedIds }; 
var paramBypassDealerBranchIDs = new SqlParameter("@BypassDealerBranchIDs", SqlDbType.TinyInt) { Value = Convert.ToInt32(filter.ByPassDealerBranchIDs) }; 

var result = 
    _dbContext.Database.SqlQuery<DealerMappingDetailsReportModel>(
     "usp_DealerMappingDetail @DealerBranchIDs,@BypassDealerBranchIDs,@SortColumn,@SortOrder,@StartIndex,@ItemsPerPage", 
     paramDealerBranchID, paramBypassDealerBranchIDs, paramSortColumn, paramSortOrder, paramStartIndex, paramItemsPerPage 
    ); 
return result.ToList(); 

EFはSqlParameterがすでに別のSqlParameterCollection

にSQLストアドプロシージャを呼び出してい

に含まれるエラーを返しますが、それはSqlParameterがすでにによって含まれる

返します別の SqlParameterCollection

+0

リセット(新しい)あなたのDbContext – ErikEJ

+0

は() 'を直接クエリ実行後' ToListメソッドを使用してみてください:。 'VAR結果= _dbContext.Database.SqlQuery (「usp_DealerMappingDetail @ DealerBranchIDs、@ BypassDealerBranchIDs、...)ToListメソッド( ); 'return result; –

+0

問題が解決しました 新しい変数を宣言し、Convert.ToInt32(filter.ByPassDealerBranchIDs)の値を渡しました。 –

答えて

0

私はと同じ問題がありました3210はStored Procedureを呼び出していました。多くの人々は、(とりわけ)Parametersコレクションの「クリア」および/または「クローニング」を推奨しています。

しかし...

私は私のSQLコマンドテキストは「完全」ではなかった...、見つかった...私はSQLでEXECコマンドを含めるのを忘れていた気づきました。同じ問題があるかもしれないようです。私の方法は、多くの場合、以下のように見えるので、私は通常、Queryablesバックを手に好き、私の方法では

は、私はこれを変更しました。

... 'EXEC' のTHIS TO

var query = UnitOfWork.DbContext.Database.SqlQuery<DocumentStatusDataItem>("dbo.usp_ListDocumentStatusForATFDocuments @ContextFullName, @WorkflowNames", 
             new SqlParameter("ContextFullName", context.FullName), 
             new SqlParameter("WorkflowNames", namesXML)) 
             .AsQueryable(); 

が欠落していることに気づく:

... 'EXEC' の今があることに気づく

var query = UnitOfWork.DbContext.Database.SqlQuery<DocumentStatusDataItem>("EXEC dbo.usp_ListDocumentStatusForATFDocuments @ContextFullName, @WorkflowNames", 
             new SqlParameter("ContextFullName", context.FullName), 
             new SqlParameter("WorkflowNames", namesXML)) 
             .AsQueryable(); 

その後、私の通話が始まりました:
たとえば... caこのようなことが突然働き始めました...そして、私は例外を取り止めました。

List<DocumentStatusDataItem> collection = query.ToList(); 

しかし、この同じ解決策も同じ問題を抱えていました。

関連する問題