我想看看我的插入语句看起来像是在接线 基于文本的ADO.NET命令。我该怎么做呢?
我一直关注以下链接:
http://damieng.com/blog/2008/07/30/linq-to-sql-log-to-debug-window-file-memory-or-multiple-writers
并已将DebugTextWriter类添加到我的项目中。所以,现在,在我的代码中,我有以下内容并没有真正做任何事情,我认为没有:
using(WorkbookDataContext dc = _conn.GetContext())
{
if(profile.ProfileId > 0)
{
dc.Profiles.Attach(profile, true);
}
else
{
dc.Profiles.InsertOnSubmit(profile);
}
dc.Log = new DebugTextWriter();
#if DEBUG
dc.Log = new System.IO.StreamWriter("linq-to-sql.log")
{
AutoFlush = true
};
#endif
dc.SubmitChanges();
}
任何想法我做错了和/或如何正确检查我的LINQ插入语句?
由于
答案 0 :(得分:1)
How to: Display Generated SQL (LINQ to SQL)
您可以使用Log属性查看SQL代码。
示例:在执行代码之前,使用Log属性在控制台窗口中显示SQL代码。 您可以将此属性与query,insert,update&删除命令。
db.Log = Console.Out;
IQueryable<Customer> custQuery =
from cust in db.Customers
where cust.City == "London"
select cust;
foreach(Customer custObj in custQuery)
{
Console.WriteLine(custObj.CustomerID);
}
您在控制台窗口中显示的这些行是您在执行上述C#代码时看到的内容。
SELECT [t0].[CustomerID], [t0].[CompanyName], [t0].[ContactName], [t0].[ContactT
itle], [t0].[Address], [t0].[City], [t0].[Region], [t0].[PostalCode], [t0].[Coun
try], [t0].[Phone], [t0].[Fax]
FROM [dbo].[Customers] AS [t0]
WHERE [t0].[City] = @p0
-- @p0: Input String (Size = 6; Prec = 0; Scale = 0) [London]
-- Context: SqlProvider(Sql2005) Model: AttributedMetaModel Build: 3.5.20810.0
AROUT
BSBEV
CONSH
EASTC
NORTS
SEVES
或者,您可以使用LINQ to SQL Debug Visualizer 将鼠标悬停在VS 2008调试器中的LINQ表达式上,然后在评估时检查ORM将在运行时执行的原始SQL LINQ查询表达式。