我們來看看簡單日誌記錄。
用ef,畢竟最終還是對資料庫的操作,那麼怎麼清楚地知道ef執行的sql語句是什麼樣的?
ef提供了日誌記錄功能
var res = ctx.commodities.orderby(x => x.price).skip(1).take(1view code);console.writeline(res);
生成的sql如下,此時ef並沒有執行這條sql語句
selectview code[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
查詢記憶體中的集合都是實現的 ienumerable 介面,那麼直接就是查詢出資料
查詢遠端資料實現的是iqueryable介面,所以我們可以直接列印它,就是sql語句
但是你不能有返回型別為ienumberable的方法,比如tolist(),那麼它就把資料拿到記憶體中來了。
用這個也是很爽的,前面我學ef,通過ef提供的這個,對我幫助還是很大的。
這個log是個action型別的,如果是控制台,可以順手將console.writeline賦值給它
也可以自定義方法
staticview codevoid mylog(string name, string
msg)
的跟蹤:$");
}
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...