私はEntity Frameworkを使用していますが、作業を繰り返すために必要なリストがあります。私はデータベース上のクエリから直接この作業を行うことができず、リストは静かにすることができるので、Parallel ForeachまたはAsParallelを使用することができます。遅延読み込みリストを使用する並列Foreach
問題は、メモリにToList()を使用してリストをロードしてからパラレル関数で実行しても、レイジーロードされたナビゲーションプロパティが破棄されるということです。私はこのような単純なもの(これは、この質問の目的のために多くを簡素化されました)実行しています
:
var quoteList = DbContext.Quotes.ToList();
List<QuotesItem> quoteViewItemList = new List<QuotesItem>();
quoteList.ForAll(quote => {
var quoteViewItem = new QuotesItem();
quoteViewItem.YearEnding = quote.QuoteService.FirstOrDefault().Yearending; //is SOMETIMES null when it shouldn't be.
quoteViewItem.Manager quote.Client.Manager.Name; //IS sometimes null
quoteViewItem.... = ..... // More processing here
quoteViewItemList.Add(quoteViewItem);
});
問題がQuoteServiceではNULLであるように思わ時にはときに、リスト内のNULLでありません。
'quoteList'は' List 'ではありませんか?もしそうなら、QuoteServiceというメンバーはいないでしょう。あなたは 'quote.QuoteService .....'を意味しましたか? –
juharr
はい、これは間違いです。私は今それを修正しています。 – michael