LINQ查询跳过调试,不执行下一行

本文关键字:一行 执行 查询 调试 LINQ | 更新日期: 2023-09-27 18:14:18

我已经搜索了这个问题的答案,但没有运气。

我有一个简单的LINQ查询,当我在DEBUG (VS2010)中跳过时,我没有得到错误/异常,但下一行代码永远不会到达。

下面是我的代码:
var model = actionLogRepository.Query()
                .Take(30)
                .OrderByDescending(x => x.LogDateTime)
                .ToList();
return PartialView(model);

DEBUG点击'var model'行代码,F10跳过,但没有到达'return'行。

谁能告诉我这里发生了什么事?

LINQ查询跳过调试,不执行下一行

由于您的LINQ从数据库获取数据,我将首先检查从数据库获取数据需要多长时间。可能是调试器等待数据从数据库返回,而您的数据库运行缓慢。

你可以从

得到EF生成的SQL
var query = ((ObjectQuery)model).ToTraceString();

或者设置上下文以输出查询

using (var context = new YourDatabaseEntities())
{
    context.Database.Log = x => Debug.WriteLine(x);
}

UPDATE:

固定,但仍然不确定为什么。我的actionlogreposiitory . query()方法返回一个IEnumerable对象。出于某种原因,这没有任何作用。我用下面的命令删除了仓库调用,现在一切正常了。

        var model = db.ActionLogs
                        .Take(30)
                        .OrderByDescending(x => x.LogDateTime)
                        .ToList();

模型现在只是返回一个通用的ActionLog列表。我想如果我改变我的查询方法返回一个通用的列表,它也会工作。

更新2:

现在改变了我的查询方法返回一个DbSet而不是IEnumerable类型的ActionLog,我原来的代码现在工作。

    public DbSet<ActionLog> Query()

感谢大家的快速回复。