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从数据库获取数据,我将首先检查从数据库获取数据需要多长时间。可能是调试器等待数据从数据库返回,而您的数据库运行缓慢。
你可以从
得到EF生成的SQLvar 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()
感谢大家的快速回复。