91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Linq DataLoadOptions怎么用

發布時間:2021-12-01 16:50:32 來源:億速云 閱讀:128 作者:小新 欄目:編程語言

小編給大家分享一下Linq DataLoadOptions怎么用,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

Linq DataLoadOptions限制

Linq to sql對Linq DataLoadOptions的使用是有限制的,它只支持1個1對多的關系。一個顧客可能有多個訂單,一個訂單可能有多個詳細訂單:

DataLoadOptions options = new DataLoadOptions();  options.LoadWith<Customer>(c => c.Orders);  options.LoadWith<Order>(o => o.Order_Details);  ctx.LoadOptions = options;  IEnumerable<Customer> customers = ctx.Customers.ToList<Customer>();

這樣的語句執行后會導致下面的SQL執行N次(參數不同):

  1. SELECT [t0].[OrderID], [t0].[CustomerID], [t0].[EmployeeID], [t0].[OrderDate], 
    [t0].[RequiredDate], [t0].[ShippedDate], [t0].[ShipVia], [t0].[Freight], [t0].
    [ShipName], [t0].[ShipAddress], [t0].[ShipCity], [t0].[ShipRegion], [t0].
    [ShipPostalCode], [t0].[ShipCountry], [t1].[OrderID] AS [OrderID2], [t1].
    [ProductID], [t1].[UnitPrice], [t1].[Quantity], [t1].[Discount], (  

  2. SELECT COUNT(*)  

  3. FROM [dbo].[Order Details] AS [t2]  

  4. WHERE [t2].[OrderID] = [t0].[OrderID]  

  5. ) AS [count]  

  6. FROM [dbo].[Orders] AS [t0]  

  7. LEFT OUTER JOIN [dbo].[Order Details] AS [t1] ON [t1].[OrderID] = [t0].[OrderID]  

  8. WHERE [t0].[CustomerID] = @x1  

  9. ORDER BY [t0].[OrderID], [t1].[ProductID]  

  10. -- @x1: Input StringFixedLength (Size = 5Prec = 0Scale = 0) [ALFKI] 

而對于多對1的關系,Linq to sql對于Linq DataLoadOptions沒有限制:

DataLoadOptions options = new DataLoadOptions();  options.LoadWith<Product>(c => c.Category);  options.LoadWith<Product>(c => c.Order_Details);  options.LoadWith<Order_Detail>(o => o.Order);  ctx.LoadOptions = options;  IEnumerable<Product> products = ctx.Products.ToList<Product>();

由于多個產品對應1個分類,多個詳細訂單對應1個訂單,只有產品和詳細訂單才是多對1的關系,所以也只會有1次SQL(不過這樣的操作還是少執行為妙,消耗太大了)

  1. SELECT [t0].[ProductID], [t0].[ProductName], [t0].[SupplierID], [t0].
    [CategoryID], [t0].[QuantityPerUnit], [t0].[UnitPrice], [t0].
    [UnitsInStock], [t0].[UnitsOnOrder], [t0].[ReorderLevel], [t0].
    [Discontinued], [t3].[OrderID], [t3].[ProductID] AS [ProductID2], [t3].
    [UnitPrice] AS [UnitPrice2], [t3].[Quantity], [t3].[Discount], [t4].
    [OrderID] AS [OrderID2], [t4].[CustomerID], [t4].[EmployeeID], [t4].
    [OrderDate], [t4].[RequiredDate], [t4].[ShippedDate], [t4].[ShipVia], 
    [t4].[Freight], [t4].[ShipName], [t4].[ShipAddress], [t4].[ShipCity], 
    [t4].[ShipRegion], [t4].[ShipPostalCode], [t4].[ShipCountry], (  

  2. SELECT COUNT(*)  

  3. FROM [dbo].[Order Details] AS [t5]  

  4. INNER JOIN [dbo].[Orders] AS [t6] ON [t6].[OrderID] = [t5].[OrderID]  

  5. WHERE [t5].[ProductID] = [t0].[ProductID]  

  6. ) AS [count], [t2].[test], [t2].[CategoryID] AS [CategoryID2], [t2].
    [CategoryName], [t2].[Description], [t2].[Picture]  

  7. FROM [dbo].[Products] AS [t0]  

  8. LEFT OUTER JOIN (  

  9. SELECT 1 AS [test], [t1].[CategoryID], [t1].[CategoryName], [t1].
    [Description], [t1].[Picture]  

  10. FROM [dbo].[Categories] AS [t1]  

  11. ) AS [t2] ON [t2].[CategoryID] = [t0].[CategoryID]  

  12. LEFT OUTER JOIN ([dbo].[Order Details] AS [t3]  

  13. INNER JOIN [dbo].[Orders] AS [t4] ON [t4].[OrderID] = [t3].
    [OrderID]) ON [t3].[ProductID] = [t0].[ProductID]  

  14. ORDER BY [t0].[ProductID], [t2].[CategoryID], [t3].[OrderID] 

以上是“Linq DataLoadOptions怎么用”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

克什克腾旗| 云安县| 佛山市| 丽水市| 阳朔县| 梁河县| 隆尧县| 滨州市| 绥棱县| 如皋市| 垫江县| 南汇区| 定南县| 石景山区| 云安县| 额尔古纳市| 通州区| 正安县| 栾城县| 河津市| 龙游县| 绥德县| 大理市| 白河县| 若羌县| 札达县| 玛沁县| 呼和浩特市| 鹰潭市| 九龙城区| 石河子市| 旬阳县| 泗水县| 渭源县| 桐柏县| 海门市| 丘北县| 常熟市| 宜良县| 长岭县| 申扎县|