ef 查詢生成語句的幾種方式
阿新 • • 發佈:2020-10-15
前言
整理一下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是無法使用的。