有没有办法可以将Database.SqlQuery作为异步运行?

25 c# asp.net asp.net-mvc asp.net-web-api

我有以下内容:

var sql = @"Select 
                case when Test.TestTypeId = 1 then Exam.Name
                     when Test.TestTypeId = 2 then Topic.Name
                end as Name,
                Test.Title,
                Test.TestId,
                Test.QuestionsCount
            FROM Test
            LEFT JOIN Exam ON Test.ExamId = Exam.ExamId
            LEFT JOIN Topic ON Test.TopicId = Topic.TopicId
            WHERE Test.TestStatusId = 1 -- Current";
var tests = db.Database.SqlQuery<TestDTO>(sql).ToList();
Run Code Online (Sandbox Code Playgroud)

我正在为此寻找一种异步方法,但似乎并不存在.有没有办法可以运行这个异步?

Kir*_*kiy 36

如果您使用的是Entity Framework 6,则只需指定即可

using System.Data.Entity;
Run Code Online (Sandbox Code Playgroud)

在您的文件的顶部.

ToListAsync是一个IQueryable<T>声明的扩展方法System.Data.Entity.QueryableExtensions

  • @JeanCarlos不,它返回`DbRawSqlQuery <T>`,它直接实现`IDbAsyncEnumerable <T>`以及诸如`ToListAsync <T>`之类的方法. (9认同)
  • 正如你所说,'ToListAsync`只对`IQueryable`,`SqlQuery`返回`IEnumerable <T>` (2认同)