EF Log

執行 EF 時,顯示 執行的 sql command 以及 所花費的時間

第一次程式碼如下:

TestEntities db = new TestEntities();
var ids = Enumerable.Range(1, 10).Select(i => i * 10);
var result = db.A.Where(a => ids.Contains(a.id)).Take(10);
Console.WriteLine(result.ToString());

執行結果:

可以簡單看到 SQL 語法

參考 Kevin 大的文章才發現,其實可以更詳細一些
初探 Entity Framework 6 - Logging

第二次程式碥如下:

TestEntities db = new TestEntities();
string log = "";
var ids = Enumerable.Range(1, 10).Select(i => i * 10);

var result = db.A.Where(a => ids.Contains(a.id)).Take(10);
db.Database.Log = (l) => log += l;
result.ToList();
Console.WriteLine(log);

執行結果:

顯示的內容詳細多了

oneline command 的 log 雖然把 command 以一行顯示,但是會少去一些重要的資訊
所以就不寫上來了,等有機會要研究到原始碼進行調整再看看怎麼處理吧