EF6學習筆記二十 簡單日誌記錄

2022-02-23 15:45:39 字數 1516 閱讀 3716

我們來看看簡單日誌記錄。

用ef,畢竟最終還是對資料庫的操作,那麼怎麼清楚地知道ef執行的sql語句是什麼樣的?

ef提供了日誌記錄功能

var res = ctx.commodities.orderby(x => x.price).skip(1).take(1);

console.writeline(res);

生成的sql如下,此時ef並沒有執行這條sql語句

select

[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

查詢記憶體中的集合都是實現的 ienumerable 介面,那麼直接就是查詢出資料

查詢遠端資料實現的是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...