SqlParameter已经包含在另一个SqlParameterCollection中,但是我没有看到

Jon*_*ood 7 c# linq ado.net sqlparameter

我有以下代码.

// Get total row count and build Pagination object
var countQuery = ArticleServerContext.Database.SqlQuery<int>("GetFullTextSearchCount @SearchTerm",
    new SqlParameter("@SearchTerm", fullTextQuery));
Pagination pagination = new Pagination(countQuery.Single(), page ?? 1);
// Get search results for current page
var resultsQuery = ArticleServerContext.Database.SqlQuery<ArticleSummary>("GetFullTextSearchResults @SearchTerm, @SkipRows, @TakeRows",
    new SqlParameter("@SearchTerm", fullTextQuery),
    new SqlParameter("@SkipRows", pagination.SkippedRows),
    new SqlParameter("@TakeRows", pagination.RowsPerPage));
// Build model
SearchResultsModel model = new SearchResultsModel
{
    SearchTerm = searchTerm.Trim(),
    Pagination = pagination,
    Results = resultsQuery.ToList()   // <=== Here's where the error happens
};
Run Code Online (Sandbox Code Playgroud)

当我尝试枚举时resultsQuery,我收到以下错误消息.

SqlParameter已包含在另一个SqlParameterCollection中.

这个错误消息似乎很清楚,但我无法看到我在哪里添加一个SqlParameter以上的任何东西.我唯一能想到的是两个调用的第一个参数是相同的.C#可以以某种方式组合它们吗?无论哪种方式,我需要它们包含相同的数据.

谁能看到这里发生了什么?

编辑:

对不起,这结果是一个调试问题.我有另一个问题阻止了我预期的结果.但是当我打破调试器并逐步执行代码时,我得到了上面提到的错误.

看来,代码执行使用SqlParameter中的问题,然后我试图检查查询的内容和查询同样具有相同的运行SqlParameter,而是什么原因造成的错误.

不幸的是,既然我有赏金,我就无法删除这个问题.

Jon*_*ood 6

当我发布这个问题时,我对发生的事情没有很好的理解.经过进一步研究,结果证明:

  1. 一个单独的问题导致我的程序不显示我预期的(任何)结果.

  2. 使用Visual Studio调试器,我在此代码中设置了断点.当我介入时,查询正在执行.但是当我尝试检查数据时,会导致查询再次执行.正是这种双重执行造成了我报告的错误.实际上,当代码正常运行时,没有发生此错误.

感谢所有花时间看这个问题的人.


小智 5

在定义之前清除参数:-

cmd.Parameters.Clear()
Run Code Online (Sandbox Code Playgroud)