当前位置:主页   - 电脑 - 程序设计 - C#
LINQ体验(18)——LINQ to SQL语句之视图和继承支持
来源:网络   作者:   更新时间:2012-08-05
收藏此页】    【字号    】    【打印】    【关闭

  视图

  我们使用视图和使用数据表类似,只需将视图从“服务器资源管理器/数据库资源管理器”拖动到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。

其它资源
来源声明

版权与免责声明
1、本站所发布的文章仅供技术交流参考,本站不主张将其做为决策的依据,浏览者可自愿选择采信与否,本站不对因采信这些信息所产生的任何问题负责。
2、本站部分文章来源于网络,其版权为原权利人所有。由于来源之故,有的文章未能获得作者姓名,署“未知”或“佚名”。对于这些文章,有知悉作者姓名的请告知本站,以便及时署名。如果作者要求删除,我们将予以删除。除此之外本站不再承担其它责任。
3、本站部分文章来源于本站原创,本站拥有所有权利。
4、如对本站发布的信息有异议,请联系我们,经本站确认后,将在三个工作日内做出修改或删除处理。
请参阅权责声明