首页 / 网页编程 / ASP.NET / LINQ体验(18)——LINQ to SQL语句之视图和继承支持
LINQ体验(18)——LINQ to SQL语句之视图和继承支持2010-11-19 cnblogs lyj视图我们使用视图和使用数据表类似,只需将视图从“服务器资源 管理器/数据库资源管理器”拖动到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 设计器来映射继承层次结构,它自动生成了代码。