我抓住将由LINQ to SQL命令发出的SQL并将其存储在我的C#代码中的字符串中.我不想将它发送到控制台,我不想在SQL Studio或LinqPad中单独分析它.我希望有这个字符串,以便我的程序可以用字符串做它想要的.(实际上,我会将它发送到log4net,但那是偶然的).
有谁知道如何得到这个?我知道在你开始遍历迭代器之前,SQL实际上并没有发布到数据库,但我希望也许有一种方法可以事先获得SQL.
如果您正在使用Entity Framework,则可以ToTraceString()在ObjectQuery上使用此方法,如下所示:
ObjectQuery<Product> productQuery =
from p in context.Products
select p;
string sql = productQuery.ToTraceString();
Run Code Online (Sandbox Code Playgroud)
如果您使用Linq to Sql,那么您的DataContext有一个Log属性,可用于获取Sql输出.
StringBuilder logBuilder = new StringBuilder();
db.Log = new StringWriter(logBuilder);
var custQuery =
(from cust in db.Customers
where cust.City == "London"
select cust).ToList();
string sql = logBuilder.ToString();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
740 次 |
| 最近记录: |