1. 程式人生 > 實用技巧 >ef 查詢生成語句的幾種方式

ef 查詢生成語句的幾種方式

前言

整理一下ef 如何檢視生成sql 語句的,因為ef core 出來了,統一整理一下。

正文

方式如下:

資料庫監聽

這是一種推薦方式,因為除錯和程式碼分開,不會有影響。

然後連線:

然後可以進行一些常規選擇,儲存監聽的位置。

然後是選擇事件:

只篩選Tsql相關的。

然後通過列篩選:

這裡介紹幾個,一個是HOMENAME,這個是電腦的電腦名,因為可能有多個使用者在操作。其實一般來說,每個人的測試伺服器的賬號都是不一樣的,也可以通過LOGINNAME 來篩選。

然後一個就是資料庫的DATABASENAME,這個你獲取到的不一定是你查的那個資料庫,但是你可以排除REPORTSERVER 這個資料庫,因為這個是報告服務,而且頻繁操作,非常影響你的檢視。

然後其他的其實可以按照自己的需求進行篩選。

EF 鏈式

EFForTestEntities eFForTestEntities = new EFForTestEntities();
var sql=eFForTestEntities.User.AsNoTracking();
Console.WriteLine(sql);
Console.Read();

通過呼叫AsNoTracking 檢視,一般是另外寫測試單元來檢視。

linq

linq和上面的差不多,就是呼叫的方法改為:ToTraceString()

Log 輸出

DbContext.Database.Log = (c) => { Console.WriteLine(c); }

這種方式通過log 列印來輸出,我們可以放在日誌檔案中,然後進行檢視。

這種方式同樣使用與ef core,而EF 鏈式和linq 在.net core的ef是無法使用的。