I have the following code.
// 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
};
When I attempt to enumerate resultsQuery
, I get the following error message.
The SqlParameter is already contained by another SqlParameterCollection.
This error message seems clear enough, but I cannot see where I'm adding an SqlParameter
to more than one anything. The only thing I can imagine is that the first parameter to both calls are identical. Could C# be combining them somehow? Either way, I need them to contain the same data.
Can anyone see what's happening here?
EDIT:
Sorry, this turned out to be a debugging issue. I had another issue that prevented the results I expected. But when I break in the debugger and step through my code, I get the error mentioned above.
It seems that the code executes using the SqlParameter
in question, and then I attempt to inspect the contents of the query and the query runs again with the same SqlParameter
, and that is what is causing the error.
Unfortunately, now that I have a bounty, I cannot delete the question.
I didn't have a good understanding of what was happening when I posted this question. After further study, it turns out that:
A separate issue was causing my program not to display the (any) results I expected.
Using the Visual Studio debugger, I had set a breakpoint in this code. As I stepped through, the queries were being executed. But then when I attempt to inspect the data, that caused the queries to be executed again. It was this dual execution that was causing the error I reported. In fact, this error was not occurring when the code ran normally.
Thanks to everyone who took time to look at this issue.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With