首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MVCMiniProfiler没有显示Linq查询的部分

MVCMiniProfiler没有显示Linq查询的部分
EN

Stack Overflow用户
提问于 2012-06-14 08:05:17
回答 1查看 121关注 0票数 0

我使用MVCMiniProfiler来分析一些数据库查询。对于一个查询,它无法显示我在代码中定义的查询的Where部分。

守则如下:

MyAppDataContext.cs:

代码语言:javascript
复制
public partial class MyAppDataContext : System.Data.Linq.DataContext {
    public static MyAppDataContext CreateNewContext() {

        var sqlConnection = new SqlConnection(ConfigurationManager.ConnectionStrings["MyAppConnectionString"].ToString());
        var profiledConnection = new ProfiledDbConnection(sqlConnection, MiniProfiler.Current);
        return new MyAppDataContext(profiledConnection);

    }
}

程序代码:

代码语言:javascript
复制
MyAppDataContext DataContext = MyAppDataContext.CreateNewContext();
IEnumerable<Requests> Entities = DataContext.Requests;

using (profiler.Step("get data")) {
    var dataset = Entities.Where(x => x.ControleStatus == 4).OrderBy(x => x.ID)
}

我也试过:

代码语言:javascript
复制
using (profiler.Step("get data")) {
    var dataset = from x in Entities 
                  where x.ControleStatus == 4
                  orderby x.ID
                  select x;
}

这就是MVC Mini Profiler向我展示的内容:

代码语言:javascript
复制
SELECT [t0].[ID], [t0].[DatumOntvangst], [t0].[DatumRapport], [t0].[FK_SID], 
    [t0].[ControleStatus], [t0].[SStatus] FROM [dbo].[Request] AS [t0] 

正如你所看到的,没有Where语句。Btw:输出包含正确的结果,但是由于这个查询需要30秒才能完成,我想知道是否首先从数据库检索所有数据,然后在Code中应用where条件(而不是在数据库上)。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-06-14 18:40:07

您需要让它返回IQueryable。通过返回IEnumerable,您不允许IQueryable提供程序转换表达式树的其余部分。LINQ版本的查询运算符在IEnumerable上工作。LINQ需要IQueryable版本。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11029037

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档