http://blog.csdn.net/csh624366188/article/details/7065036#_Toc228672769

介绍.NET中不同的数据访问层的使用方式,由此得出Entity Framework在一个.NET系统中的应用及其在原有设计基础上的改变。从大的方面来看数据访问的设计方案基本有如下几类:

  • DataSet
  • 手写代码通过ADO.NET2.0连接类与数据库交互
  • ORM组件

DataSet方案

最基本的Dataset数据访问的实现使用下图表示:

图1

如图所示,DataSet与数据源之间通过DataAdapter连接,逻辑中直接访问DataSet获取数据,或是通过ADO.NET2.0的非连接类,或者通过强类型DataSet以一种类型安全的方式访问数据。

    缺点逻辑代码与数据访问代码耦合高。

改进的的DataSet方案

图2

这种设计方式将业务所需的实体抽象出来,并把对DataSet的操作封装在其中,这样一定程序上解除业务逻辑与数据访问间的耦合。

手写代码通过ADO.NET2.0连接类与数据库交互

这种方式是我使用的最多的一种方式,其可以提供最大的控制能力,且效率最高,唯一的不足是当业务变化时修改数据访问代码的工作量比较大,通过代码生成器也能一定程度上解决这个问题

 

ORM – LINQ to SQL

在.NET平台下ORM的解决方案有不少,本文只讨论两个微软官方的解决方案。先是LINQ to SQL技术。LINQ to SQL是一个将不再更新的技术。其有很多不足之处,如,不能灵活的定义对象模型与数据表之间的映射、无法扩展提供程序只能支持SQL Server等。

这样数据访问层的设计如下所示:

图3

 

ORM – ADO.NET Entity Framework

作为下一代数据访问的技术领导者。Entity Framework的设计很多地方都保留了高扩展性。其最重要的一个改进在于其映射定义的灵活性。先来看下图:

图4

由图可以看出,使用Entity Framework可以充分的定义与数据库表映射的实体,并将这个实体直接用于业务逻辑层或作为服务的数据契约。实体设计较其他技术的优势体现在以下几方面:

  • 创建ComplexType(CSDL部分有讨论)
  • EntitySet的继承

使用Entity Framework后,可以将实体类的设计工作完全放在EDM的设计过程中,而不再需要手工写一些大同小异的代码,并且对这个实体模型(包含于EDM中)可以在运行时修改并生效。另外,开发人员与数据库直接打交道的次数将大大减少,大部分时间开发人员只需操作实体模型,框架会自动完成对数据库的操作。

posted on 2012-10-24 08:12  醉意人间  阅读(505)  评论(0编辑  收藏  举报