背景: 我开发MIS应用程序.使用DOT.NET.喜欢对象编程.性能很重要.

由于以上要求,我考察了很多程序访问数据的方法.一种是ORM,一种是直接使用ADO.NET.当然数据访问的问题要从数据表一直研究到用户的界面才算完成任务.

首先,因为使用对象,所以ORM吸引了我.研究了很多ORM.NET,.ibatis.net的DataMap很好用.用它调用存储过程很好.还有速马的XORMS,是最简单好用的.还有其他的很多.但他们都有共同的问题:数据绑定.使用ORM之后,微软的DataSet,DataView等数据集合就不能用了,而是使用带IList接口的对象列表,这是数据处理程序的最大问题,我有很多数据会显示.

然后我分析了微软的例子.典型的是Fitch and Mather,PetShop,还有Duwamish.他们都直接使用了ADO.NET.FM重点使用了存储过程和DataTable,PetShop使用的是DataReader,Duwamish使用强类型的DatSet和存储过程.

结论:
数据库方面:根据程序的要求,首先必须使用存储过程.
1.使用存储过程可以将处理和数据联系在一起,这是高性能的关键因素.
2.存储过程减少了网络调用.
3.存储的缺点是开发调试麻烦,升级管理不方便.

在DotNet的客户程序上:因为数据绑定和对象操作的因素,有必要区别对待.
1.业务逻辑上的对象操作,仅使用了较少的对象,这适合使用DataReader和利用存储过程快速读取来初始化和更新对象的状态.这是轻量操作的典型,如PETSHOP. 当然这也为我们使用对象技术的人很多的安慰(我不太想用dataset,喜欢Robert C Martin的对象技术,轻量的对象,但我是在做开发,不是研究,能用的软件才是最重要的.).
2.数据集合上的操作:这里使用了很多数据,如果再使用对象或者对象Collection,就不如DataSet的效率高了.所以要使用存储过程初始化强类型的DataSet, DataTable, DataRow.

后记:必须简化存储过程和DataSet的开发.最好能生成代码的模版,这样才好.所以我发现最好使用CodeSmith.