程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> ASP.NET >> 關於ASP.NET >> LINQ體驗(18)——LINQ to SQL語句之視圖和繼承支持

LINQ體驗(18)——LINQ to SQL語句之視圖和繼承支持

編輯:關於ASP.NET

視圖

我們使用視圖和使用數據表類似,只需將視圖從“服務器資源 管理器/數據庫資源管理器”拖動到O/R 設計器上,自動可以創建基於這些 視圖的實體類。我們可以同操作數據表一樣來操作視圖了。這裡注意:O/R 設計 器是一個簡單的對象關系映射器,因為它僅支持 1:1 映射關系。換句話說,實 體類與數據庫表或視圖之間只能具有 1:1 映射關系。不支持復雜映射(例如, 將一個實體類映射到多個表)。但是,可以將一個實體類映射到一個聯接多個相 關表的視圖。 下面使用NORTHWND數據庫中自帶的Invoices、Quarterly Orders 兩個視圖為例,寫出兩個范例。

查詢:匿名類型形式

我們使用下面代 碼來查詢出ShipCity 在London的發票。

var q =
  from i in db.Invoices
  where i.ShipCity == "London"
  select new
  {
    i.OrderID,
     i.ProductName,
    i.Quantity,
    i.CustomerName
  };

這裡,生成的SQL語句同使用數據表類似:

SELECT [t0].[OrderID], [t0].[ProductName], [t0]. [Quantity],
[t0].[CustomerName] FROM [dbo].[Invoices] AS [t0]
WHERE [t0].[ShipCity] = @p0
-- @p0: Input NVarChar (Size = 6; Prec = 0; Scale = 0) [London]

查詢:標識映射形式

下例查 詢出每季的訂單。

var q =
  from qo in db.Quarterly_Orders
  select qo;

生成SQL語句為:

SELECT [t0].[CustomerID], [t0].[CompanyName], [t0]. [City],
[t0].[Country] FROM [dbo].[Quarterly Orders] AS [t0]

繼承支持

LINQ to SQL 支持單表映射,其整個繼承層次結構 存儲在單個數據庫表中。該表包含整個層次結構的所有可能數據列的平展聯合。 (聯合是將兩個表組合成一個表的結果,組合後的表包含任一原始表中存在的行 。)每行中不適用於該行所表示的實例類型的列為 null。

單表映射策略 是最簡單的繼承表示形式,為許多不同類別的查詢提供了良好的性能特征,如果 我們要在 LINQ to SQL 中實現這種映射,必須在繼承層次結構的根類中指定屬 性 (Attribute) 和屬性 (Attribute) 的屬性 (Property)。我們還可以使用O/R 設計器來映射繼承層次結構,它自動生成了代碼。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved