gpt4 book ai didi

linq - 使用 LINQ 的 SubmitChanges 时检查 Insert 语句

转载 作者:行者123 更新时间:2023-12-02 10:50:54 25 4
gpt4 key购买 nike

我想看看我的插入语句会是什么样子,就像我正在接线一样创建基于文本的 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 insert 语句吗?

谢谢

最佳答案

How to: Display Generated SQL (LINQ to SQL)

您可以使用 Log 属性查看 SQL 代码。

示例:使用 Log 属性在代码执行之前在控制台窗口中显示 SQL 代码。您可以将此属性与查询、插入、更新和删除命令一起使用。

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 表达式上,然后在评估 LINQ 查询表达式时检查 ORM 将在运行时执行的原始 SQL。

关于linq - 使用 LINQ 的 SubmitChanges 时检查 Insert 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2961290/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com