《ADO.NET 3.5高级编程 应用LINQ&Entity Framework》PDF下载

  • 购买积分:18 如何计算积分?
  • 作  者:孟兆炜编
  • 出 版 社:北京:清华大学出版社
  • 出版年份:2010
  • ISBN:9787302221906
  • 页数:607 页
图书介绍:本书介绍了LINQ & Entity Framework的各个方面,主要包括5部分:ADO.NET 3.5简介,LINQ架构和基本实现,LINQ to SQL等各种相关领域的LINQ实现等。

第Ⅰ部分 ADO.NET 3.5概览 3

第1章 使用ADO.NET 3.5提供的新方法访问数据 3

1.1 语言集成查询LINQ 5

1.1.1 LINQ to Objects 8

1.1.2 LINQ to SQL 14

1.1.3 DataContext编程 22

1.1.4 LINQ to Datasets 34

1.1.5 LINQ to Entities 38

1.1.6 LINQ to XML 39

1.1.7 LINQ to XSD 48

1.2 ADO.NET实体框架和实体数据模型 49

1.2.1 从物理架构到概念架构的映射 51

1.2.2 使用实体数据模型向导来创建默认实体数据模型 53

1.2.3 使用实体数据模型Designer来修改存储架构到概念架构的映射 54

1.2.4 根据数据模型创建和绑定数据源 56

1.2.5 具体化对象上下文 57

1.3 小结 58

第Ⅱ部分 LINQ简介 65

第2章 理解LINQ的体系结构和实现 65

2.1 .NET Fx 3.5中支持LINQ的名称空间 66

2.2 支持LINQ的C#和VB扩展 67

2.2.1 隐式类型化局部变量 68

2.2.2 对象初始化器 70

2.2.3 使用对象初始化器的数组初始化器 71

2.2.4 集合初始化器 72

2.2.5 匿名类型 72

2.2.6 扩展方法 73

2.2.7 匿名方法和通用谓词 76

2.2.8 Lambda表达式 78

2.2.9 标准查询操作符 81

2.2.10 表达式树和编译查询 84

2.2.11 IQueryable<T>接口和领域相关的LINQ实现 89

2.3 小结 89

第3章 使用LINQ to Objects执行LINQ查询表达式 91

3.1 标准查询操作符分组 92

3.2 C# 3.0和VB 9.0中作为关键字的标准查询操作符 93

3.3 LINQ项目样例查询浏览器 94

3.4 LINQ to Objects代码示例的样例类 96

3.4.1 C#类定义和初始化代码样例 97

3.4.2 VB类定义和初始化代码样例 99

3.5 限制操作符:Where 100

3.5.1 简单Where表达式 101

3.5.2 复合Where表达式 101

3.5.3 带有Index参数的方法调用及IndexOf()的使用 103

3.6 投影操作符 105

3.6.1 Select 105

3.6.2 SelectMany 107

3.7 分区操作符 110

3.7.1 Take 111

3.7.2 Skip 111

3.7.3 Skip/Take样例 112

3.7.4 TakeWhile 113

3.7.5 SkipWhile 113

3.7.6 SkipWhile/TakeWhile样例 114

3.8 连接操作符 114

3.8.1 Join 115

3.8.2 GroupJoin 117

3.9 串联操作符:Concat 119

3.10 排序操作符 121

3.10.1 OrderByDescending 122

3.10.2 ThenBy 122

3.10.3 ThenByDescending 122

3.10.4 Reverse 123

3.10.5 Ordering操作符的示例 123

3.11 分组操作符:GroupBy 125

3.11.1 使用方法调用语法的GroupBy操作 126

3.11.2 使用查询表达式语法的GroupBy操作 127

3.12 集合操作符 129

3.12.1 Distinct 129

3.12.2 Union 130

3.12.3 Intersect 131

3.12.4 Except 132

3.13 转换操作符 133

3.13.1 AsEnumerable 133

3.13.2 AsQueryable 133

3.13.3 Cast 135

3.13.4 OfType 137

3.13.5 To...操作符 138

3.14 相等操作符:SequenceEqual 143

3.15 元素操作符 144

3.15.1 First、FirstOrDefault 145

3.15.2 Last、LastOrDefault 145

3.15.3 Single、SingleOrDefault 146

3.15.4 DefaultlfEmpty 146

3.15.5 ElementAt、ElementAtOrDefault 147

3.16 生成操作符 147

3.16.1 Range 148

3.16.2 Repeat 148

3.16.3 Empty 148

3.17 量词操作符 148

3.17.1 Any 149

3.17.2 All 149

3.17.3 Contains 150

3.18 聚集操作符 150

3.18.1 Count和LongCount 150

3.18.2 Min、Max、Sum和Average 151

3.18.3 Aggregate 152

3.19 小结 154

第4章 使用高级查询操作符和表达式 157

4.1 浏览聚集操作符的基本查询语法 157

4.1.1 数字操作符的基本方法调用语法 158

4.1.2 使用Let临时局部聚集变量 160

4.1.3 格式化查询输出 161

4.2 在聚集查询中使用Group By 162

4.2.1 分组关联子对象 163

4.2.2 分组连接子对象 164

4.2.3 用层次化分组连接表达式组合连接操作和Group By操作 166

4.2.4 使用嵌套LINQ查询比较组连接 168

4.2.5 使用实体关联模拟左外连接 170

4.3 充分利用Contains()标准查询操作符 171

4.3.1 使用复合OR操作符模拟SQL WHERE子句 171

4.3.2 使用Contains()模拟SQL IN()函数 173

4.4 通过编译查询表达式树提高性能 174

4.5 测试LINQ to SQL和LINQ to Entities项目的Mocking集合 178

4.5.1 创建Mock对象和初始化器 179

4.5.2 使用GroupJoin表达式创建对象图 184

4.6 小结 189

第Ⅲ部分 使用领域相关的LINQ实现 197

第5章 使用LINQ to SQL和LinqDataSource 197

5.1 使用LINQ to SQL进行对象关系映射 199

5.1.1 使用LINQ to SQL对象关系设计器将表映射到实体集 199

5.1.2 使用SqlMetal.exe生成部分实体类和映射文件 201

5.1.3 使用*.dbml和*.xml映射文件 204

5.1.4 分析生成类 207

5.1.5 初始化DataContext及其对象图 211

5.2 使用LINQ to SQL作为数据访问层 213

5.2.1 LINQ to SQL查询管道 214

5.2.2 添加、更新和删除对象 217

5.2.3 检测并解决并发冲突 221

5.2.4 用存储过程代替动态SQL 224

5.2.5 将LINQ to SQL变为中间层 227

5.3 使用LinqDataSource控件进行ASP.NET数据绑定 228

5.3.1 在页面中加入LinqDataSource 229

5.3.2 用EntityRef代替数据绑定Web控件的外键值 230

5.3.3 预先加载EntityRef值以降低数据库服务器流量 232

5.4 将Windows窗体控件绑定到实体 235

5.4.1 自动生成必要的层次化数据编辑窗体 235

5.4.2 持久化对实体的编辑和集合的更改 237

5.5 小结 243

第6章 使用LINQ to DataSet查询DataTable 245

6.1 比较DataSets和DataContexts 246

6.2 探索LINQ to DataSet的各种功能 247

6.3 运行只读的LINQ to DataSet查询 249

6.3.1 查询无类型的DataSet 250

6.3.2 定制查找列表 255

6.3.3 查询类型化DataSet 256

6.4 使用AsDataView()为数据绑定创建LinqDataViews 259

6.5 将LINQ查询结果复制到DataTable 263

6.5.1 复制类型化的DataRow 264

6.5.2 基于投影处理匿名类型 265

6.6 小结 269

第7章 使用LINQ to XML处理文档 271

7.1 将XML集成到CLR 271

7.1.1 使用Xen最小化XML/对象的失配 272

7.1.2 使用Cω查询XML 272

7.2 System.Xml.Linq名称空间 273

7.3 查询基本的XML Infoset 275

7.3.1 为VB查询推断架构和启用智能感知技术 277

7.3.2 利用VB 9.0的Axis属性 278

7.3.3 元素和属性内容的隐式键入与显式键入 280

7.4 组合XML Infosets 282

7.4.1 在C# 3.0中使用功能构造 284

7.4.2 使用VB 9.0进行常量XML构造 287

7.5 业务文档中的分组元素和聚集数量值 291

7.5.1 使用GroupJoin生成层次化文档 291

7.5.2 使用一对多和多对一关联 293

7.5.3 聚集每个客户的Order_Details和Orders小计 295

7.6 使用XML名称空间和局部名称 298

7.6.1 C# 3.0中的XML名称空间 300

7.6.2 VB 9.0中的XML名称空间 305

7.7 执行异构连接和查找操作 310

7.7.1 使用查找操作添加子元素组 310

7.7.2 将文档连接至插入元素 315

7.7.3 将文档和LINQ to SQL或者LINQ to Object实体相连接 316

7.8 小结 318

第8章 探索第三方和新兴的LINQ实现 321

8.1 新兴的微软LINQ实现 322

8.1.1 Parallel LINQ 322

8.1.2 LINQ to REST 329

8.1.3 LINQ to XSD 342

8.1.4 LINQ to Stored XML 343

8.2 第三方领域相关的LINQ实现 344

8.2.1 LINQ to Active Directory 344

8.2.2 LINQ to SharePoint 345

8.3 小结 351

第Ⅳ部分 ADO.NET实体框架介绍 359

第9章 使用实体数据模型提升数据抽象级别 359

9.1 理解实体关系模型 361

9.1.1 实体关系和实体数据模型术语 362

9.1.2 实体关系图 363

9.2 理解实体框架结构和组件 364

9.2.1 利用实体数据模型设计器实现从物理层到概念层的映射 366

9.2.2 分析ModelName.edmx文件的节 371

9.3 使用Entity Client、Entity SQL和Client Views 377

9.3.1 用Entity SQL编写EntityQueries 378

9.3.2 作为客户视图执行Entity SQL查询 378

9.4 使用Object Service 383

9.4.1 使用ObjectContext 384

9.4.2 使用Entity SQL编写ObjectQueries 386

9.4.3 使用查询生成器方法合成ObjectQuery 389

9.4.4 使用LINQ to Entities提供者 391

9.5 理解关于持久化透明的争论 392

9.6 小结 394

第10章 定义存储层、概念层和映射层 395

10.1 探索并定制EDMX文件 397

10.1.1 存储模型(SSDL内容) 399

10.1.2 概念模型(CSDL内容) 412

10.1.3 映射(MSL内容) 415

10.2 实现TPH继承 419

10.2.1 设定鉴别器列并创建派生类 420

10.2.2 查询基类和派生类 422

10.3 遍历MetadataWorkspace 428

10.4 小结 431

第11章 Entity SQL简介 433

11.1 使用eSqlBlast Entity SQL查询工具 434

11.1.1 连接页面 434

11.1.2 模型页面 435

11.1.3 查询页面 435

11.1.4 结果页面 436

11.2 理解Entity SQL和Transact-SQL的不同 438

11.2.1 强制使用实体别名前缀 439

11.2.2 要求使用显式投影 440

11.2.3 VALUE修饰符平面化结果 440

11.2.4 使用圆点标记符语法返回多对一导航属性 441

11.2.5 一对多导航属性需要嵌套查询 442

11.2.6 连接是最后的手段 443

11.2.7 NAVIGATE是圆点表示法或嵌套查询的一个复杂的替代候选 444

11.2.8 用REF、DEREF、CREATEREF、ROW和KEY管理实体引用 445

11.2.9 使用类型构造函数创建ROW、Multiset和EntityType的实例 447

11.2.10 UNION、INTERSECT、OVERLAPS和EXCEPT集合操作需要子查询 449

11.2.11 对集合操作符返回的集合排序需要嵌套查询 449

11.2.12 用于集合的操作符ANYELEMENT和FLATTEN 450

11.2.13 ORDER BY子句的SKIP和LIMIT子句处理分页 451

11.2.14 IS OF、OFTYPE和TREAT是多态查询的类型操作符 452

11.2.15 在WHERE子句的约束中使用返回聚集值的子查询将导致抛出异常 453

11.3 对EntityClient执行eSQL查询 454

11.3.1 解析EntityDataReader返回的IExtendedDataRecord 455

11.3.2 测量EntitySQL查询的性能损失 458

11.3.3 执行参数化eSQL查询 459

11.4 使用SQL Server Compact作为实体框架的数据存储 461

11.5 小结 462

第Ⅴ部分 实现ADO.NET实体框架 469

第12章 利用对象服务和LINQ to Entities 469

12.1 探索生成的实体类 469

12.1.1 ModelNameEntities局部类 470

12.1.2 EntityName局部类 472

12.1.3 实体类序列化 477

12.2 执行eSQL ObjectQuery 479

12.3 启用关联实体延迟加载或预先加载 483

12.3.1 使用Load()方法进行延迟加载 483

12.3.2 使用Include()操作符进行预先加载 485

12.4 在加载中排序并过滤关联的EntityCollection 489

12.5 组合查询生成器方法以编写ObjectQuery 491

12.6 编写LINQ to Entities查询 493

12.6.1 不被支持的LINQ关键字、标准查询操作符和重载 494

12.6.2 传统LINQ to Entities查询 494

12.6.3 在LINQ to Entities查询中使用Include()操作符 495

12.6.4 编译LINQ to Entity查询 497

12.6.5 比较LINQ to Entities查询的性能 499

12.7 参数化对象查询 500

12.8 小结 501

第13章 更新实体和复杂类型 503

13.1 理解ObjectContext的ObjectStateManager及其子对象 503

13.2 更新或删除实体 504

13.2.1 将数据更改持久保存到数据存储中 505

13.2.2 记录实体的状态 506

13.2.3 删除选定实体 506

13.2.4 更新相关EntitySet或者EntityObject 507

13.2.5 删除实体及依赖的关联实体 508

13.2.6 事务化更新和删除操作 508

13.3 添加实体 508

13.4 刷新陈旧的实体 509

13.5 验证数据添加和更新 509

13.6 最优化ObjectContext的生命周期 513

13.7 比较LINQ to Entities和带外SQL更新的性能 514

13.8 管理乐观并发冲突 515

13.8.1 对实体属性启用乐观的并发管理 516

13.8.2 使用代码实现乐观的并发管理 517

13.9 通过存储过程执行CRUD操作 520

13.9.1 创建初始数据模型 521

13.9.2 添加FunctionImport以填充EntitySet 522

13.9.3 将Insert、Update和Delete存储过程指派到实体 524

13.10 使用复杂类型 528

13.11 小结 532

第14章 将实体绑定到数据感知控件 533

14.1 将Windows窗体控件绑定到对象数据源实体 534

14.1.1 使用Load()、Include()和Attach()方法修整对象图 535

14.1.2 选择活动的顶级实体实例和相关的实体实例 540

14.1.3 使用未绑定的ComboBoxes来指定关联 543

14.1.4 在组合框中设置复合主键成员 546

14.1.5 将更改持久保存到数据存储中 553

14.2 在ASP.NET服务器控件中使用EntityDataSource 555

14.2.1 在ASP.NET Web应用程序页面中添加EntityDataSource控件 556

14.2.2 探索实体数据源 557

14.2.3 绑定并格式化GridView控件 562

14.2.4 使用GroupBy属性和下拉列表显示按照国家排列的客户 563

14.2.5 添加链接的DetailsView 564

14.3 小结 565

第15章 使用实体框架作为数据源 567

15.1 创建ADO.NET数据服务数据源 568

15.1.1 理解REST体系结构 570

15.1.2 创建简单的Web服务并在浏览器中使用该服务 570

15.1.3 导航集合和其成员 572

15.1.4 利用查询字符串选项 575

15.1.5 调用服务操作 578

15.2 通过.NET 3.5客户端库使用ADO.NET数据服务 580

15.2.1 从Windows窗体客户端执行查询 581

15.2.2 使用URI查询和DataService.SaveChanges()更改EntitySet 589

15.3 通过AJAX客户端库使用ADO.NET数据服务 596

15.3.1 熟悉JavaScript对象标记 596

15.3.2 创建Astoria的AJAX测试客户端 597

15.3.3 添加、编辑和删除实体 600

15.4 小结 602