【问题标题】:Is there a way I can run a Database.SqlQuery as async?有没有办法可以异步运行 Database.SqlQuery?
【发布时间】:2014-08-18 16:20:59
【问题描述】:

我有以下几点:

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();

我一直在为此寻找异步方法,但它似乎不存在。有没有办法可以异步运行?

【问题讨论】:

    标签: c# asp.net asp.net-mvc asp.net-web-api


    【解决方案1】:

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

    using System.Data.Entity;
    

    在文件的顶部。

    ToListAsyncIQueryable&lt;T&gt;的扩展方法,在System.Data.Entity.QueryableExtensions中声明

    【讨论】:

    • 如你所说,ToListAsync 只适用于IQueryableSqlQuery 返回IEnumerable&lt;T&gt;
    • @JeanCarlos 不,它返回DbRawSqlQuery&lt;T&gt;,它直接实现了IDbAsyncEnumerable&lt;T&gt;以及ToListAsync&lt;T&gt;等方法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-23
    • 1970-01-01
    • 2022-01-25
    • 2010-09-08
    • 2021-01-17
    • 2011-07-22
    相关资源
    最近更新 更多