关于DataSet和IList<>泛型集合。
我个人认为应当尽量减少DataSet的使用,原因有一下四个:
一、DataSet被定义为“内存中的数据库”,可想而知它是一个重量级的对象,也就是说,创建一个DataSet对象的系统开销是比较大的。我们如果大范围的使用DataSet,对系统的压力会增大很多。
二、DataSet本身是弱类型的,在业务逻辑处理层进行操作时会存在类型安全的隐患,并且在编码时也不能提供代码提示的便捷性。
三、DataSet仍然属于“二维表”的范畴,即关系代数的概念。在理论上,它不符合面向对象的设计理念;在现实操作上,它不能满足业务复杂性的具体操作(我们不能以对象的概念进行业务上的思考)。
四、如果深度使用DataSet,比如用到DataRelation等,我想这又会牵扯到与数据库的同步问题,及数据库关于加锁机制的问题。这样会增大我们的技术复杂度(我觉得我们应该提高系统的业务复杂度,而降低技术复杂度)。
我个人认为应当尽量减少DataSet的使用,原因有一下四个:
一、DataSet被定义为“内存中的数据库”,可想而知它是一个重量级的对象,也就是说,创建一个DataSet对象的系统开销是比较大的。我们如果大范围的使用DataSet,对系统的压力会增大很多。
二、DataSet本身是弱类型的,在业务逻辑处理层进行操作时会存在类型安全的隐患,并且在编码时也不能提供代码提示的便捷性。
三、DataSet仍然属于“二维表”的范畴,即关系代数的概念。在理论上,它不符合面向对象的设计理念;在现实操作上,它不能满足业务复杂性的具体操作(我们不能以对象的概念进行业务上的思考)。
四、如果深度使用DataSet,比如用到DataRelation等,我想这又会牵扯到与数据库的同步问题,及数据库关于加锁机制的问题。这样会增大我们的技术复杂度(我觉得我们应该提高系统的业务复杂度,而降低技术复杂度)。