想我的LINQ查詢像LINQ和生成的SQL
var qry = from c in nwEntitiesContext.CategorySet.AsEnumerable()
let products = this.GetProducts().WithCategoryID(c.CategoryID)
select new Model.Category
{
ID = c.CategoryID,
Name = c.CategoryName,
Products = new Model.LazyList<Core.Model.Product>(products)
};
return qry.AsQueryable();
我只是想知道什麼查詢它會在運行時生成....怎麼看到什麼查詢它從VS2010 IDE當我們運行產生在調試模式下的代碼....引導我一步一步來。
不使用linq pad我們無法看到生成的sql。因爲有時數據檢索速度很慢,那麼用戶肯定希望看到生成的是什麼SQL。請指教。 – Mou 2011-04-29 11:19:45
@ user728750 - 您沒有顯示「GetProducts()」的代碼,但是如果您正在進行EF查詢以獲取具有某個categoryId的所有產品,則可能會導致針對** EVERY **'Category'的數據庫調用在DB中。在你調用'AsEnumerable'後,你處於對象空間(EF進行查詢並獲取所有類別)。之後,根據你所做的事情,你可以確實爲每個類別做一個數據庫查詢來解釋你所面臨的性能問題。您可以通過運行例如SQL來檢查SQL級別發生了什麼。 SQL事件探查器(請參閱我的答案)。 – Yakimych 2011-04-29 11:29:59