当LINQ执行时暴露SQL触发
早上所有。当LINQ执行时暴露SQL触发
给你一个快速的问题 - 我在哪里可以找到LINQ语句触发时执行的SQL?
我有下面的代码一个可行的治疗,
var r = (from p in getproductweightsbuyer.tblWeights
where p.MemberId == memberid &&
p.LocationId == locationid
select p);
if (buyer != "Not Specified")
r = r.Where(p => p.UnitUserField1 == buyer);
if (subcategory != "Not Specified")
r = r.Where(p => p.UnitUserField2 == subcategory);
我只是不知道,在有条件的射击where子句的SQL。
如果您调试您的代码,您可以放置一个断点并分析r
的值,该值将包含实际的SQL代码。
感谢Stefan--我记不起SQL何时会暴露。 – 2010-09-06 08:24:36
如果你手头的数据库环境下,你可以尝试:上述选项
context.GetCommand(query).CommandText
不错 - 我不知道这件事。感谢Thorsten。 – 2010-09-06 08:25:42
除了,你也可以运行了SQL事件探查器,看看实际的SQL派下来的线连接到DB。
这是有道理的......你可以告诉它是星期一!欢呼水稻。 – 2010-09-06 08:26:06
如果您使用LINQ to SQL,您可以设置DataContext.Log
属性。当您执行查询时,这将会记录SQL:
getproductweightsbuyer.Log = Console.Out;
var r = (from p in getproductweightsbuyer.tblWeights
where p.MemberId == memberid &&
p.LocationId == locationid
select p);
if (buyer != "Not Specified")
r = r.Where(p => p.UnitUserField1 == buyer);
if (subcategory != "Not Specified")
r = r.Where(p => p.UnitUserField2 == subcategory);
foreach (var row in r)
...
LINQ to SQL?实体框架?还有别的吗? – 2010-09-06 08:21:25