LINQ TO SQL加載模式概述
LINQ TO SQL有很多值得學習的地方,這里我們主要介紹LINQ TO SQL加載模式,包括介紹延遲加載等方面。
在LINQ TO SQL中,有兩種主要的LINQ TO SQL加載模式:直接加載和延遲加載. 這是有一個選項來控制的;DeferredLoadingEnabled。這是DataContext的一個屬性,默認為true。那么,什么叫延遲加載?簡單的說就是按需加載,也就是只有在需要的時候才加載。這樣當然是有些好處的。
但是,關鍵是說,如果某部分數據我們確定就是要加載的,那么如果再去延遲加載可能就不合適了,此時就應該選用直接加載。
來看這么一個例子
- static void Main(string[] args)
- {
- NorthwindDataContext db = new NorthwindDataContext();
- var custQuery =
- from cust in db.Customers
- where cust.City == "London"
- select cust;
- foreach (Customer custObj in custQuery)
- {
- Console.WriteLine("Customer ID: {0}", custObj.CustomerID);
- foreach (Order ord in custObj.Orders)
- {
- Console.WriteLine("\tOrder ID: {0}", ord.OrderID);
- foreach (OrderDetail detail in ord.OrderDetails)
- {
- Console.WriteLine("\t\tProduct ID: {0}", detail.ProductID);
- }
- }
- }
- Console.Read();
- }
以上是查詢了一個客戶列表,但是在讀取的時候,我們不光要讀客戶列表,還要讀取它相關的訂單及明細。
需要注意的是,我們沒有對db的加載模式做設置,此時將使用延遲LINQ TO SQL加載模式。
【編輯推薦】