高级查询概念.pdfVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第12章 高级查询概念 由于LINQ to SQL 中有很多功能都可以应用于关系数据以及处理关系数据库,因此有 必要专门用一章来讨论LINQ to SQL 与关系数据之间的密切关系。例如,LINQ to SQL 支 持事务和组合键,而且通常入门级的章节中不会介绍这些类型的主题。因此,本章将重点 讨论以下比较高级的主题: ● 数据库关系 ● 已编译查询 ● 查询执行的位置 ● 延迟执行与立即执行的比较 ● 组合键 ● 只读数据 有关事务的概念将在第13 章讨论。 12.1 数据库关系 LINQ to SQL 完全支持主键和外键,而且第 10 章提供了一对代码示例来说明如何在 LINQ to SQL 中实现主键和外键。基于第10 章的相关内容,本节将讨论如何在LINQ to SQL 中定义键并说明了如何进行跨键查询。 12.1.1 表示关系 如您所知,数据库中的关系通常是主键/外键类型,即一个表中的一个列或列的集合被 另一个表中的列或列集合引用。在关系数据库中,两个表之间的导航是通过联接操作符或 操作来实现的。在联接操作中,通过在主键和外键上应用 JOIN 操作符将主键表引用为外 键表。 下面的 T-SQL 查询说明了如何通过 ContactID 列将 Person.Contact 表和 HumanResources.Employee 表相联接,从而实现在同一个查询中同时引用这两个表。 SELECT pc.ContactID, pc.FirstName, pc.LastName, pc.EmailAddress, hre.EmployeeID, hre.NationalIDNumber, hre.Title, hre.HireDate FROM Person.Contact pc INNER JOIN HumanResources.Employee hre ON pc.ContactID = hre.ContactID ORDER BY pc.LastName 第III 部分 LINQ to SQL 接下来的关键就是在LINQ to SQL 中应用相同的联接功能。这可以通过用于辅助表示 数据库中表之间主键/外键关系的类型来实现。这两种类型是EntitySet 和EntityRef 范型, 其类型均为(of TEntity) 。这两种类型为一对多关系中的“多”方提供集合,它们均与 [Association]属性结合使用,[Association]属性有助于定义和表示一个关系。 1. EntitySet (of TEntity) EntitySet 类型为一对多关系中“多”方的结果提供集合。换句话说,它意味着所定义 的关系是一对多关系。如前所述,它与[Association]属性结合使用来定义并表示一个关系。 在关系定义中也使用了 OtherKey 特性。它为与当前类(表) 的特性(列)相对照的相关类 (表)指定特性(列) 的名称。 下面的示例分别为Contacts 表和Employee 表定义了一个类。在AdventureWorks 数据 库中,可以看到在 ContactID 列上为两个表定义了一个关系。此处的代码将这两个类映射 到它们各自表示的数据库表上,同时使用[Association]属性和EntitySet 类型在Contact 类和 Employee 类之间定义了一个一对多关系。关系的定义是在Contact 类中完成的。 public class AdventureWorks : DataContext { public AdventureWorks(string connection) : base(connection) {} public TableContact Contacts; public TableEmployee Employees; } [Table(Name = Per

您可能关注的文档

文档评论(0)

xina171127 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档