如何追蹤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 不跟蹤使用者處理的命令,例如從返回的命令執行的結果不會被追蹤,從而不影響
下面的示例顯示 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