1. 程式人生 > >如何追蹤LINQ To SQL 生成的SQL

如何追蹤LINQ To SQL 生成的SQL

通常有三種常用的方法用來追蹤由 LINQ To SQL 提供器生成的 SQL 命令:用 DataContext.log ,用 DataContext.GetCommand ,和用 LINQ To SQL 除錯平臺。

1) DataContext.log

這句程式碼可以使生成的 SQL 顯示在控制檯視窗。這個 SQL 可以是查詢,插入,更新和刪除命令。

=======================================================

db.Log = Console.Out;

=======================================================

附加參考:

2) DataContext.GetCommand

這個方法提供了有關 LINQ To SQL 生成的 SQL 命令的相關資訊,但是它僅僅是獲取方法而不影響 DataContext 的狀態。請注意以下事項(引自 MSDN 文件):

· 引數必須非空,否則會丟擲一個空引數異常。

· 正常的 LINQ 查詢轉換為 SQL 查詢執行丟擲異常的申請不能被轉換。

· 只有以一個查詢命令返回。特別是額外的命令,這是渴望載入命令,不包括在內。

· DataContext 不跟蹤使用者處理的命令,例如從返回的命令執行的結果不會被追蹤,從而不影響

DataContext 的狀態。

下面的示例顯示 SQL 命令生成的控制檯視窗中的 LINQ To SQL 查詢。

======================================================

MyDataContextdb = new MyDataContext();

var query = from d in db.Departments select d;

DbCommand dc = db.GetCommand(q);

Console.WriteLine(dc.CommandText);

=======================================================

附加參考:

3) LINQ To SQL 除錯平臺

LINQ To SQL 除錯平臺通過看見在 Visual Studio 除錯平臺 生成的 SQL 可以幫助我們除錯 LINQ to SQL IQueryable<> 查詢語句。我們也可以在平臺上執行生成的 SQL 語句來檢查返回值。

要安裝 LINQ to SQL 除錯平臺,請按照以下步驟:

a) 下載 LINQ to SQL Visualizer.zip 壓縮包在 這兒

b) 關閉正在與性的各種版本的 visual studio 2008

c) .zip 壓縮包的 /bin/debug/ 路徑複製 SqlServerQueryVisualizer.dll 程式集到本地路徑 /Program Files/Microsoft Visual Studio9.0/Common7/Packages/Debugger/Visualizers/

d) 再次啟動 Visual Studio2008 。現在我們就可以用 LINQ to SQL 除錯平臺了。

附加參考:

相關推薦

如何追蹤LINQ To SQL 生成SQL

通常有三種常用的方法用來追蹤由 LINQ To SQL 提供器生成的 SQL 命令:用 DataContext.log ,用 DataContext.GetCommand ,和用 LINQ To SQL 除錯平臺。 1) 用 DataContext.log 這句程

Linq To Sql進階系列(六)用object的動態查詢與保存log篇

directory ont 簡單 lambda表達式 bind add dbo 所有 生成 動態的生成sql語句,根據不同的條件構造不同的where字句,是拼接sql 字符串的好處。而Linq的推出,是為了彌補編程中的 Data != Object 的問題。我們又該如何實現

LINQ TO SQL和Entity Framework 的關系 你了解多少?

mode 最小 -m 發的 開發 content 內容 語言 account 1. LINQ TO SQL 和EF 特點: LINQ TO SQL和Entity Framework都是一種包含LINQ功能的ORM 也就是所謂的關系對象的映射。其中包括的有DBFrist

Linq to SQL 的連表查詢(轉)

equal query 交集 數據庫 調用 數據 變量 bst log 關於數據庫的查詢中經常需要用到多表的連接查詢,這裏就簡單地展示關於linq的查詢功能。 1、單表的查詢 [csharp] view plain copy var query = from

PowerDesigner在生成SQL時報錯Generation aborted due to errors detected during the verification of the mod

mage .com sql inf pos pow model mode class pdm 生成sql 時候 會彈 把 Check model 的勾 去掉 問題就解決了PowerDesigner在生成SQL時報錯Generation aborted du

LINQ to SQL活學活用(1):這要打破舊觀念

部分 res htm aac created 名稱 chang list utf 程序架構 如今比較經典的架構,看看以下圖片。 怎樣實現 在一個N層應用

LINQ to SQL語句(1)之Where

.sh ipp 大於 作用 cts eight erl div 集合 Where操作   適用場景:實現過濾,查詢等功能。   說明:與SQL命令中的Where作用相似,都是起到範圍限定也就是過濾作用的 ,而判斷條件就是它後面所接的子句。   Whe

Linq to sql之left join運用示例

creat extent ext mod .get then rom emp ase 示例一: var l= from a in cardsBll.GetCards() join b in usersBll.GetAllUsers() on a.Car

史上最全 ——LINQ to SQL語句

轉自:http://www.cnblogs.com/jara/p/3473996.html 史上最全 ——LINQ to SQL語句 LINQ to SQL語句(1)之Where 適用場景:實現過濾,查詢等功能。 說明:與SQL命令中的Where作用相似,都是起到範圍限定也就是過濾作

Linq to Sql學習總結3

儲存過程: 關係資料庫中的儲存過程在實體類中對映為具體的方法,直接將儲存過程拖動到對應的dbml設計檢視中即可,如圖: 在將儲存過程拖入dbml設計檢視中時,系統執行了如下命令: SET FMTONLY ON;--表示只獲取結果集的元資料(即相關列名 ) exec sp_Name SET

Linq to Sql學習總結4

延遲執行: Linq to sql 查詢句法在定義時並不會執行,只有在呼叫的時候才會執行(執行T_Sql查詢),每呼叫一次就會執行一次。對於需要多次呼叫的情況,可以使用ToList()方法先把結果集儲存下來。 DataLoadOptions DataLoadOptions options = ne

Linq to Sql學習總結5

修改併發異常ChangeConfictException //測試修改併發異常ChangeConfictException var query = from p in ctx.Products where p.Category

Linq to Sql學習總結6

單表繼承 繼承實體定義: //linq to sql支援實體單表繼承,即某一實體類(具有對映關係的類)可以派生多個子類,子類不用再通過特性對映基類的關係資料 //子類對基類實體進行分類,通過特性InheritanceMapping對基類實體分類 //基類實體以某一成員屬性作

檢視LINQ生成SQL語句的幾種方法

原文如下: http://hi.baidu.com/king%B3%CC%D0%F2%C8%CB%C9%FA/blog/item/9d2696f03c9e05ca7831aa79.html   記錄LINQ生成的SQL語句是常用的除錯方式,而且能根據需要來優化LINQ生成

linq to sql and linq to object 總結

  Enumable型別是linq to object   是一個很特殊的型別   這個型別的資料來源都是在程式的記憶體中 Queryable型別是 Linq to sql   對資料庫進行操作都是這個型別    &

LINQ to SQL語句之儲存過程

源地址連線: LINQ to SQL語句之儲存過程 在我們編寫程式中,往往需要一些儲存過程,在LINQ to SQL中怎麼使用呢?也許比原來的更簡單些。下面我們以NORTHWND.MDF資料庫中自帶的幾個儲存過程來理解一下。 1.標量返回 在資料庫中,有名為Customers Co

Linq to Sql 事務處理

Linq to SQL支援三種事務處理模型:顯式本地事務、顯式可分發事務、隱式事務 1. 隱式事務     當呼叫SubmitChanges 時,L2S會檢查當前環境是否開啟了事務(下面兩節中建立的事務),如果沒有開始事務,則 L2S啟動本地事務(IDbTran

Linq to Sql : 併發衝突及處理策略

1、 通過覆蓋資料庫值解決併發衝突 try { db.SubmitChanges(ConflictMode.ContinueOnConflict); //需要指定為ConflictMode.ContinueOnConflict } catch (ChangeConflictExcepti

Linq to sql直接執行sql語句

查詢: 返回一個值             string strSql = "SELECT COUNT(0) FROM Person(NOLOCK)";             var query = dataContext.ExecuteQuery<int&

Linq to sql中使用DateDiff()

 Linq to sql中使用DateDiff() 計算時間差的方法 第一種辦法: from p in PurchaseLists where EntityFunctions.DiffDays(p.CreateTime,DateTime.Now) >=(p.DayLen/2) selec