2017-09-10 79 views
0

我遇到了非常奇怪的行爲,我真的不知道這可能與什麼有關。我試圖用兩種方式檢索數據:純粹的LINQ和存儲過程,但數據不會回來。沒有錯誤或例外。在SQL Server端,我可以從配置文件中看到存儲過程已執行。實體框架。無法檢索數據

public async Task<IEnumerable<OrdersDto>> GetAll(int userid) 
{ 
    OrdersDto[] result; 
    try 
    { 
     SqlParameter param = new SqlParameter("@UserId", userid); 
     result = await _db.Database.SqlQuery<OrdersDto>("UserOrders @UserId", param).ToArrayAsync(); 
     //var result = await _db.Order.Where(x=> x.CustomerId == 1) 
     // .Include(x => x.OrderDetails) 
     // .Include(x => x.OrderStatus) 
     // .Include(x => x.PaymentStatus) 
     // .AsNoTracking().ToArrayAsync(); 
    } 
    catch (Exception ex) 
    { 
     throw new Exception(ex.Message); 
    } 
    return result; 
} 
+0

你檢查過連接字符串 – wandos

+0

您是否嘗試過同步運行它?只是爲了看看它是否有效? –

+0

@ wandos,在應用程序中有很多查詢工作正常,所以這肯定不是連接字符串。 –

回答

2

當您的await已到達時,線程返回給調用者。當您檢查await結果時,因爲您沒有等待完成任務,所以您沒有得到結果。如果您同步運行查詢,你可以看到你想要的結果:

result = _db.Database.SqlQuery<OrdersDto>("UserOrders @UserId", param).ToArray(); 

有異步運行這段代碼沒有問題,但你應該檢查,只有當任務完成結果: