我目前正在使用.Net的强类型数据集继承了DAL的系统。在此之前我从未与他们合作,但我发现我对使用它们有强烈的厌恶。与基于POCO的DAL相比,它们看起来很笨重,难以管理,并且生成的对象高度耦合了特定于数据库的问题(例如,从表和行访问对象,通过键值获取所需数据等等) DAL的全部目的是将其从逻辑层中抽象出来吗?)。
有一些关于重写和/或重新分解数据库层部分的讨论。我个人想要删除这些数据集,但我很难说服一些习惯使用它们的同事。
使用强类型数据集与基于POCO的DAL相比,有哪些优缺点?我是否有理由反对强类型数据集,或者社区一致认为它们不是问题?还有其他我缺少的解决方案吗?
虽然我也同意使用像NHibernate这样的ORM框架有好处,但我认为这种复杂性的库对我的同事来说很难卖。如果有人能够为这个方向提供足够引人注目的论据,我想听听。
答案 0 :(得分:2)
强类型数据集是一种简单的方法来执行基于设计器的数据库访问方法。它们可以从数据库生成,并且相当容易更新。它们还具有强制执行数据类型的好处。
您可以将它们视为原始ADO.NET与DataSet,DataTables和DataAdapter以及Entity Framework之间的过渡阶段。我会尝试使用设计器和数据库第一代代码生成实体框架,以替代当前方法给同事。它应该是熟悉的模式,并允许它们更容易过渡。它也应该是改进现有代码的最低额外工作量。
您可以使用该介绍来实现他们的舒适度,然后开始介绍POCO,Linq和新项目中的关注点分离。请记住,通常,更改速度越快(和/或工作负载越高),阻力越大。如果您能够以一口大小的作品呈现新的方法,并作为概念的安全感证明,那么您将会受到更好的接受。变化是风险,因此由于未知因素而导致的感知和潜在工作扩展的管理非常重要。