簡體   English   中英

並行ForEach錯誤

[英]Parallel.ForEach Error

EntityFramework.dll中發生類型'System.InvalidOperationException'的異常,但未在用戶代碼中處理

附加信息:創建模型時不能使用上下文。 如果在OnModelCreating方法內部使用上下文,或者多個線程同時訪問同一上下文實例,則可能引發此異常。 請注意,不能保證DbContext和相關類的實例成員是線程安全的。

IQueryable<VMPARForms> TempfilteredMember = filteredMember;                      

IQueryable<clsPARForms> parformslist = dbcontext.PARForms;

Parallel.ForEach(TempfilteredMember.Where(c => c.PARStatus == 21), item =>
{
    var list = parformslist.Where(x => x.CaseNumber == item.CaseNumber && x.PARID != item.PARID).FirstOrDefault();

    if (list != null)
    {
        item.PARStatus = list.PARStatus;
    }

});

我認為問題在於您正在嘗試創建EF上下文的多個對象。 該文件說

ObjectContext類不是線程安全的。 在多線程方案中,不能確保ObjectContext中數據對象的完整性。 ObjectContext類不是線程安全的

上下文不是線程安全的。 只要同一實體類的實例未被多個上下文同時跟蹤,您仍然可以創建多線程應用程序。 EF多線程

根據您的應用程序,您可以使用ToList()來實現您的數據,並按需對其進行過濾,或者嘗試更改查詢的邏輯。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM