ここにいる3人のプログラマーの同僚はこれに困惑しています。以前のストアドプロシージャ呼び出しから古いデータが返されるのはなぜですか?ここでは、2番目の検索の誤った結果を示しています。
最初の検索は正常に機能します。7392と入力し、ボタンをクリックして、期待どおりに株式7392の結果を取得します。しかし、2番目の数値(7395)を入力すると、不要な7392の結果が再び返されます。
私は最初にデザイナーと一緒にEFデータベースを使用します。ストアドプロシージャは、Entity Framework関数import(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()の実行後に誤った結果が表示されます。
ストアドプロシージャをSSMSから実行すると、毎回期待される結果が返されます。SQL Profilerを実行して、正しい検索パラメーターがSPROCに渡されていることを確認しました。
複数の結果を返す検索を実行すると、前の結果に追加された期待される結果が返されます。ここで何が起こっているのかについてのアイデアはありますか?
前もって感謝します。