LINQ TO SQL加載模式概述
LINQ TO SQL有很多值得學(xué)習(xí)的地方,這里我們主要介紹LINQ TO SQL加載模式,包括介紹延遲加載等方面。
在LINQ TO SQL中,有兩種主要的LINQ TO SQL加載模式:直接加載和延遲加載. 這是有一個(gè)選項(xiàng)來(lái)控制的;DeferredLoadingEnabled。這是DataContext的一個(gè)屬性,默認(rèn)為true。那么,什么叫延遲加載?簡(jiǎn)單的說(shuō)就是按需加載,也就是只有在需要的時(shí)候才加載。這樣當(dāng)然是有些好處的。
但是,關(guān)鍵是說(shuō),如果某部分?jǐn)?shù)據(jù)我們確定就是要加載的,那么如果再去延遲加載可能就不合適了,此時(shí)就應(yīng)該選用直接加載。
來(lái)看這么一個(gè)例子
- 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();
- }
以上是查詢了一個(gè)客戶列表,但是在讀取的時(shí)候,我們不光要讀客戶列表,還要讀取它相關(guān)的訂單及明細(xì)。
需要注意的是,我們沒(méi)有對(duì)db的加載模式做設(shè)置,此時(shí)將使用延遲LINQ TO SQL加載模式。
【編輯推薦】