視圖
我們使用視圖和使用數據表類似,只需將視圖從“服務器資源 管理器/數據庫資源管理器”拖動到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 設計器來映射繼承層次結構,它自動生成了代碼。