LINQ to SQL語句(24)之視圖
系列文章導航:
LINQ to SQL語句(2)之Select/Distinct
LINQ to SQL語句(3)之Count/Sum/Min/Max/Avg
LINQ to SQL語句(6)之Group By/Having
LINQ to SQL語句(7)之Exists/In/Any/All/Contains
LINQ to SQL語句(8)之Concat/Union/Intersect/Except
LINQ to SQL語句(9)之Top/Bottom和Paging和SqlMethods
LINQ to SQL語句(12)之Delete和使用Attach
LINQ to SQL語句(14)之Null語義和DateTime
LINQ to SQL語句(19)之ADO.NET與LINQ to SQL
視圖
我們使用視圖和使用數據表類似,只需將視圖從“服務器資源管理器/數據庫資源管理器”拖動到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]