0

我在ASP.NET 4.6的工作與EF 6到一個新的網絡API 2項目,我讀了很多文章,介紹了異步/的await模式,這是清楚的是,對於很多請求,這種模式由於很多原因而提高了性能。 所以我決定第一次使用它。 在這裏決定創建一個Biz項目和一個DAL項目的例子。實體框架6異步/ AWAIT失敗並行請求

這是控制器的方法:在控制器構造

[HttpGet] 
public async Task<bool> CheckValueValidity(string value, string type) 
{ 
    return await _accountsBiz.CheckValueTypeValidity(value, type); 
} 

我實例BIZ對象。

這是BIZ:

public async Task<bool> CheckValueTypeValidity(string value, string type) 
    { 
     bool isValid = false; 
     switch (type.ToLower()) 
     { 
      case "email": 
       isValid = await _accountsRepository.CheckEmailValidity(value); 
       break; 
      case "username": 
       isValid = await _accountsRepository.CheckUserNameValidity(value); 
       break; 
     } 
     return isValid; 
    } 

我實例在BIZ構造函數庫。

最後,這是DAL方法:和所有它似乎很好地工作,直到我做的兩人同時要求,其中之一返回正確的值

public async Task<bool> CheckEmailValidity(string email) 
    { 
     using(MyEntities db = new MyEntities()) 
     { 
      return await db.AspNetUsers.CountAsync(u => u.Email == email) > 0 ? false : true; 
     } 
    } 

說其他

在先前的異步操作完成之前,在此上下文中開始第二個操作。在調用此上下文中的另一個方法之前,請使用'await'來確保任何異步操作已完成。任何實例成員不保證是線程安全的。

我提出了來自兩個不同客戶端的請求,所以上下文應該不同。應該....

我不知道如何解決它。我讀了很多,我的代碼似乎是正確的。

的問題是,爲什麼拋出這個錯誤?我不明白

感謝您的建議幫助。

回答

0

好的發現執行流程中的錯誤有一個方法,使用DbContext沒有using塊....我的錯誤,但現在很明顯,上下文必須處理每個請求!