我在存储库中有这样的东西:
var results = db.EventSet.Include("Events")
.Include("TestResults")
.Include("Events.Donors")
.Include("Events.DonorPanels")
.Include("Events.Locations")
.Include("Events.DonorPanels.AgenciesDonors")
.Where(x => x.Events.Donors.DonorId == DonorId
&& x.Events.Active)
.OrderByDescending(x => x.Events.ScheduledDate)
.ThenByDescending(x => x.CreatedAt)
.ToList();
如何查看EF为此生成的SQL?
答案 0 :(得分:2)
SQL事件探查器。
或者,将代码更改为:
var q = db.EventSet.Include("Events")
.Include("TestResults")
.Include("Events.Donors")
.Include("Events.DonorPanels")
.Include("Events.Locations")
.Include("Events.DonorPanels.AgenciesDonors")
.Where(x => x.Events.Donors.DonorId == DonorId
&& x.Events.Active)
.OrderByDescending(x => x.Events.ScheduledDate)
.ThenByDescending(x => x.CreatedAt);
var sql = (q as ObjectQuery).ToTraceString();
var results = q.ToList();
答案 1 :(得分:1)
一种简单的方法是使用SQL Server Profiler,但要为令人讨厌的意外做好准备。
答案 2 :(得分:0)
Profiler绝对是一个很好的方法,但是如果你是针对SQL Server Express开发的,它就不可用(我知道)。
另一种选择是使用LINQPad。它将显示SQL,Lambda,IL和为linq查询生成的结果。如果您正在进行EF开发IMO,那绝对是必备工具。