在Linq to Entities中,你能把一个IQueryable转换成SQL字符串吗?

4

eg.

var result = myObject.Where(x => x.prop == 5);

string s = result.toSQL();

结果:

s"SELECT * FROM [myObjects] WHERE prop = 5"

意思是:查询 [myObjects] 表中属性为 5 的所有对象。

请查看http://stackoverflow.com/questions/3980874/get-tracestring-for-your-business-objects-in-the-entity-framework。 - Eranga
2个回答

8
如果涉及到 IQueryable/ObjectQuery,则您可以使用ToTraceString。 如果是IDbSet/DbSet,则可以直接使用ToString

0

使用EF 6时,我无法让.ToString()返回类似以下内容的SQL:

   db.Entry(parent)
   .Collection(p => p.Children)
   .Query()
   .Where(c => c.Active)
   .Load();

然后我想起来可以通过以下方式将其记录到调试输出中:

db.Database.Log = (entry) => System.Diagnostics.Debug.WriteLine(entry);

在加载查询之前,只需设置如上(显而易见):)

db 这里是某个派生自 DbContext 的类的实例。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接