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

时间:2015-09-24 13:32:44

标签: c# .net linq debugging

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

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

这是我的代码:

var model = actionLogRepository.Query()
                .Take(30)
                .OrderByDescending(x => x.LogDateTime)
                .ToList();

return PartialView(model);

DEBUG点击' var模型'代码行和F10步骤结束但返回'未到达行。

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

2 个答案:

答案 0 :(得分:0)

由于您的LINQ从数据库获取数据,我将首先检查从数据库获取数据所需的时间。可能是Debugger等待数据从数据库返回,并且数据库运行缓慢。

您可以从

获取由EF生成的SQL
var query = ((ObjectQuery)model).ToTraceString();

或设置Context以输出查询

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

答案 1 :(得分:0)

更新:

已修复,但仍不确定原因。我的actionLogRepository.Query()方法返回一个IEnumerable对象。出于某种原因,这并没有做任何事情。我用以下内容删除了我的存储库调用,现在一切正常。

Error: Could not find or load main class main.scala.TestSpark

模型现在只返回一个通用的ActionLog列表。我想如果我改变了我的Query方法以返回一个通用List,那么它也可以工作。

更新2:

现在改变我的Query方法以返回DbSet而不是类型为ActionLog的IEnumerable,我的原始代码现在可以正常工作。

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

谢谢大家的快速回复。