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

2022-01-13 13:01:54 字數 1803 閱讀 9838

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

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

ef提供了日誌記錄功能

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

);console.writeline(res);

view code

生成的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 (orderby[

extent1

].[price

]asc

) offset

1 rows fetch

next

1 rows only

view code

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

查詢遠端資料實現的是iqueryable介面,所以我們可以直接列印它,就是sql語句

但是你不能有返回型別為ienumberable的方法,比如tolist(),那麼它就把資料拿到記憶體中來了。

用這個也是很爽的,前面我學ef,通過ef提供的這個,對我幫助還是很大的。

這個log是個action型別的,如果是控制台,可以順手將console.writeline賦值給它

也可以自定義方法

static

void mylog(string name, string

msg)

的跟蹤:$");

}

view code

ctx.database.log = msg => mylog("四海"

再來寫入檔案看看

這是比較簡單的日誌列印,database.log提供的比較簡單,我們自己的操作並不多。

ef也提供了其他的介面,供我們更可控地記錄日誌。

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

我們來看看簡單日誌記錄。用ef,畢竟最終還是對資料庫的操作,那麼怎麼清楚地知道ef執行的sql語句是什麼樣的?ef提供了日誌記錄功能 var res ctx.commodities.orderby x x.price skip 1 take 1 console.writeline res 生成的sq...

EF6學習筆記十五 除錯EF框架原始碼

今天繼續學習ef,但是看來看去,實在是感覺不爽啊,因為你不知道原始碼裡面到底是什麼回事,我只能去猜去想象,要是有原始碼給我看幾個單詞也好啊。建立自己的控制台專案,引入兩個程式集,並且控制台程式新增對這兩個程式集的引用,把這兩個程式集的強簽名去掉,重新生成解決方案 這裡要注意,我們只引入了entity...

切換成EF6框架

之前用的ef5框架,現在想換成ef6,可是問題到處都是。解決方案 第一步 建立空控制台程式 第二步 在 工具 庫程式包管理器 程式包管理器控制台 這裡 預設專案,在pm 後 輸入 install package entityframework version 6.0.0 install packag...