AEF横空出世——揭开ADO.NET Entity Framework的面纱
ADO.NET Entity Framework是微软官方的ORM解决方案,由此不由得想起.NET程序设计中著名的ORM解决方案——来自民间开源的的NHibernate。伴随引人注目的VS2010即将横空出世,新的ADO.NET Entity Framework将以如何的身姿展现在大家面前呢?
Entity Framework可以解决那些问题?
1、提供一个O/R Mapping的解决方案
2、提升Application-Level Domain之抽象程度
3、可以用单一的LINQ to Entity或Entity SQL查询各种数据库
4、以EDM(Entity Data Model)来统一所有的数据模型,例如Entity Framework、Data Service、Dynamic Data,甚至将来
的Reporting Service、Analysis Service、Portal等所有数据模型都可以用EDM来描述,进而以一致性的查询语法查遍所有的资料。
- 目前.NET哪些技术用到EF?
ADO.NET Data Services
.NET RIA Servives
Silverlight
ADO.NET Dynamic Data
ASP.NET MVC Framework
ASP.NET & WinForm
Entity Data Model定义成员
Entity Framework框架示意图
Storage Model(Logical Model)
#目的是为了在关系型数据库中,将Entity及Relationships正规化成具有foreign key constrains的Table资料库
#Store schema definition language file(SSDL)
Conceptual Model
#定义Entities及Relationships
#Conceptual schema definition language file(CSDL)
Mappings
#定义Storage及Conceptual Model二者间对应
#Mapping specification language file(MSL)
Object Services对象服务
#它是EF的一个部件System.Data.Entity.dll
#需要引用两大命名空间System.Data.Objects&System.Data.Objects.DataClass
两大命名空间汇总包含一群服务类,核心类别为ObjectContext及ObjectQuery
#作为EDM中Entity Types作业的中介服务
#Query、Insert、Update、Delete
ObjectContext对象
#EDM中Entities Type的Instance
#对于Entity数据提供Object型式互动的能力
#ObjectContext类别中包含了:
Connection to database
MetadataWorkspace对象
ObjectStateManager对象
ObjectQuery对象
#ObjectQuery泛型类别代表了回传零或多个强类别Entity Objects的查询
#一个Object Query永远属于一个既存的Object Context,意即在使用ObjectQuery之前,一定要先建立一个Objcet Context。
#因为Object Context提供了建构与执行查询所需的Connection连线及Metadata资讯。
EF(EDM)三种查询资料的方式
LINQ to Entity
Entity SQL
Query Builder Methods