LINQのサブミッチャンジを使用する場合の挿入ステートメントの検査
-
23-10-2019 - |
質問
INSERTステートメントがテキストベースの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インサートステートメントを正しく検査する方法はありますか?
ありがとう
解決
ログプロパティでSQLコードを表示できます。
例:ログプロパティを使用して、コードが実行される前にコンソールウィンドウに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からSQLデバッグビジュアライザー VS 2008デバッガー中にLINQ式の上にホバリングし、LINQクエリ式を評価するときにORMが実行時に実行されることをRAW SQLを検査します。
所属していません StackOverflow