2017-09-10 42 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(); 

有异步运行这段代码没有问题,但你应该检查,只有当任务完成结果: