第一次搜索工作正常。我输入7392,点击按钮,获得7392股票的预期结果。但如果我输入第二个数字(7395),则会再次返回不需要的7392结果。
我首先使用EF数据库与设计师。存储过程由实体框架函数导入(usp_StockSearch
)包装。结果进入一个实体。这是代码:
TofsData.TofsEntities context = mainWindow.TofsEntitiesContext;
ObjectResult<TofsData.StockSearchResult> stockSearchResults =
context.usp_StockSearch(NewStockNumTextBox.Text);
List<TofsData.StockSearchResult> stockList = stockSearchResults.ToList();
StockSearchResultsListBox.ItemsSource = stockList;
当程序运行时,函数导入结果将进入我的实体类型ObjectResult<t>
(StockSearchResult
)。在ObjectResult上调用ToList()
运行sproc并将返回的数据库值放在List<StockSearchResult>
中。
在运行此代码之前,我看到stockList,stockSearchResults和ListBox.ItemsSource为null,ListBox.Items.Count为0.当我单步执行代码时,我看到.ToList()执行后的结果不正确。 / p>
当从SSMS运行存储过程时,它每次都返回预期的结果。我运行SQL事件探查器以确保将正确的搜索参数传递给SPROC。
如果我运行一个返回多个结果的搜索,我会将预期结果附加到之前的结果中。关于这里发生了什么的任何想法?
提前致谢。
答案 0 :(得分:2)
我之前看到过这种情况,因为上下文是一个全局变量,只有在构造父类时才会创建。基本上,它是一个EF缓存问题,我认为在6.0中得到修复(遗憾的是仍然在alpha中)。
我会尝试使用每个请求的上下文模式 - 它解决了我几周前遇到的类似问题。