我們來看看簡單日誌記錄。
用ef,畢竟最終還是對資料庫的操作,那麼怎麼清楚地知道ef執行的sql語句是什麼樣的?
ef提供了日誌記錄功能
var res = ctx.commodities.orderby(x => x.price).skip(1).take(1);生成的sql如下,此時ef並沒有執行這條sql語句console.writeline(res);
select查詢記憶體中的集合都是實現的 ienumerable 介面,那麼直接就是查詢出資料[extent1].[id] as [id],
[extent1].[name] as [name],
[extent1].[unit] as [unit],
[extent1].[price] as [price],
[extent1].[fk_storeid] as [fk_storeid],
[extent1].[addtime] as [addtime]
from [dbo].[tb_commodities] as [extent1]
order by row_number() over (order by [extent1].[price] asc)
offset 1 rows fetch next 1 rows only
查詢遠端資料實現的是iqueryable介面,所以我們可以直接列印它,就是sql語句
但是你不能有返回型別為ienumberable的方法,比如tolist(),那麼它就把資料拿到記憶體中來了。
用這個也是很爽的,前面我學ef,通過ef提供的這個,對我幫助還是很大的。
這個log是個action型別的,如果是控制台,可以順手將console.writeline賦值給它
也可以自定義方法
static void mylog(string name, string msg)的跟蹤:$");
}
ctx.database.log = msg => mylog("四海", msg);再來寫入檔案看看
這是比較簡單的日誌列印,database.log提供的比較簡單,我們自己的操作並不多。
ef也提供了其他的介面,供我們更可控地記錄日誌。
EF6學習筆記二十 簡單日誌記錄
我們來看看簡單日誌記錄。用ef,畢竟最終還是對資料庫的操作,那麼怎麼清楚地知道ef執行的sql語句是什麼樣的?ef提供了日誌記錄功能 var res ctx.commodities.orderby x x.price skip 1 take 1 console.writeline res view ...
EF6學習筆記十五 除錯EF框架原始碼
今天繼續學習ef,但是看來看去,實在是感覺不爽啊,因為你不知道原始碼裡面到底是什麼回事,我只能去猜去想象,要是有原始碼給我看幾個單詞也好啊。建立自己的控制台專案,引入兩個程式集,並且控制台程式新增對這兩個程式集的引用,把這兩個程式集的強簽名去掉,重新生成解決方案 這裡要注意,我們只引入了entity...
切換成EF6框架
之前用的ef5框架,現在想換成ef6,可是問題到處都是。解決方案 第一步 建立空控制台程式 第二步 在 工具 庫程式包管理器 程式包管理器控制台 這裡 預設專案,在pm 後 輸入 install package entityframework version 6.0.0 install packag...