2017-09-10 31 views
0

私は非常に奇妙な動作に遭遇しましたが、これは何が関連しているのか分かりません。私は2つの方法でデータを取得しようとしました。純粋な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(); 

は非同期にこのコードを実行しても問題ありませんが、あなたは、タスクが完了しているだけの結果をチェックする必要があります:あなたは同期クエリを実行する場合は、ご希望の結果を見ることができます

関連する問題