LINQ与Entity Framework以及其它新特性

从LINQ to SQL迁移到ADO.NET Entity Framework

使用了LINQ这么久,现在才明确一直在用的是LINQ to SQL(用于SQL Server)。而其实LINQ是一种语言特性,与之相关的LINQ to XML、LINQ to DataSet不同点在于数据源。归根结底,LINQ就是LINQ,它来自编译器的支持,可以在任何需要操作数据的地方使用,包括网页中,BLL/DAL,以及与Entity Framework结合使用(即LINQ to Entities)。

MSDN中是这么说的,通过实体数据模型 (EDM),ADO.NET 在 .NET 环境中将实体公开为对象。这就使得对象层成为实现语言集成查询 (LINQ) 支持的理想目标。因此,LINQ to ADO.NET 包括 LINQ to Entities。借助于 LINQ to Entities,开发人员可以采用与生成业务逻辑相同的语言编写针对数据库的查询。下图说明 LINQ to Entities 与实体框架、ADO.NET 2.0 以及数据源之间的关系。

LINQ to Entities 和 ADO.NET 实体框架。

linq to sql和ado.net entity framework 是.Net Framework提供的两个ORM框架,后者在.NET Framework 3.5 SP1上才正式推出,而真正成熟是要在.Net Framework 4.0之后。CSDN上某人讲的“LINQ to SQL对于Entity Framework起的是抛砖引玉的作用”很形象。LINQ to Entities是LINQ to SQL的一个超集或加强版(Superset),在两者的Feature对比上,LINQ to Entities更重,它运行在一个概念数据模型上(Conceptual data model)。不同的地方在于,在使用LINQ to SQL的时候,映射产生的CLR/.NET类是和数据/数据库模型紧耦合或绑定的,如果改变对象模型,那么我们要直接修改这些类,同样如果数据模型改变,要使用重新生成对象代码,而ADO EF在数据/数据库模型上建立一个概念层/实体层,这使得我们要先定义概念层/实体层,接着建立数据/数据库的脚本(描述),然后在一个影射层建立实体和数据之间的逻辑映射,这使得业务和数据源之间有了很好的藕合度和隔离。而LINQ to SQL无法达到这样的效果。另外,LINQ to Entities也直接带有了ADO EF提供的另外一些强项,比如实体的继承(Entity Inheritance ),实体的组合(Entity Composition) 。

  1. ADO.NET team blog中的Migrating from LINQ to SQL to Entity Framework系列文章就是介绍如何从LINQ to SQL迁移到Entity Framework。
  2. The ADO.NET Entity Framework Overview概括介绍了ADO.NET EF。
  3. Update on LINQ to SQL and LINQ to Entities Roadmap Published 29 October 08 05:36 PM
  4. Mapping a derived class to a table in Linq-to-SQL讲了一个LINQ to SQL无法实现而ADO.NET EF可以实现的问题: Entity Inheritance。

Entity SQL & Entity Client

参考转载LINQ to SQL(LINQ2SQL) vs. ADO.NET Entity Framework(ADOEF)-ccBoy版

Parallel LINQ

PLINQ是Microsoft .NET框架中下一代支持并发性的Parallel FX特性的关键组件,用于多处理器系统上执行LINQ以提高效率。

Running Queries On Multi-Core Processors Joe Duffy and Ed Essey, 2007,介绍了当时即将推出的PLINQ。

posted @ 2009-08-28 16:28  汗水房  阅读(1893)  评论(0编辑  收藏  举报