c# - .Net 中 DAL 的强类型数据集的优点和缺点

标签 c# orm poco data-access-layer strongly-typed-dataset

我目前正在使用一个系统,该系统使用 .Net 的强类型数据集继承了 DAL。在此之前我从未与他们合作过,但我发现我对使用它们有强烈的反感。与基于 POCO 的 DAL 相比,它们看起来笨重、难以管理,并且生成的对象与特定于数据库的问题高度耦合(例如,从表和行访问对象、通过键值获取所需数据等——不是DAL 的全部目的是将其从逻辑层中抽象出来吗?)。

已经有一些关于重写和/或重构数据库层部分的讨论。我个人希望看到这些数据集被删除,但我很难说服一些习惯使用它们的同事。

与基于 POCO 的 DAL 相比,使用强类型数据集有哪些优缺点?我对强类型数据集的厌恶是合理的,还是社区一致认为它们不是问题?我还缺少其他解决方案吗?

虽然我也同意使用像 NHibernate 这样的 ORM 框架有好处,但我认为这种复杂的库对我的同事来说是很难接受的。如果有人能为这个方向提供足够有说服力的论据,我很想听听。

最佳答案

强类型数据集是一种基于设计器的数据库访问方法的简单方法。它们可以从数据库中生成,并且很容易更新。它们还具有强制执行数据类型的优势。

您可以将它们视为带有数据集、数据表和数据适配器的原始 ADO.NET 与 Entity Framework 之间的过渡阶段。我会尝试使用设计器和数据库优先代码生成来向您的同事展示 Entity Framework ,以替代当前方法。它应该是一种熟悉的模式,可以让他们更轻松地过渡。它也应该是改造现有代码的最少额外工作量。

您可以使用该介绍来提高他们的舒适度,然后开始在新项目中介绍 POCO、Linq 和关注点分离。请记住,通常情况下,变革的步伐越快(和/或工作量越大),阻力就越大。如果你能以小块的形式展示新的方法论,并作为概念的安全感证明,你会更受欢迎。变化是有风险的,因此管理认知和因未知因素导致的潜在工作扩展很重要。

关于c# - .Net 中 DAL 的强类型数据集的优点和缺点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11318916/

相关文章:

c# - Twitter OAuth Flow - 对 oob/3-legged auth 和一般流程感到困惑,不需要 PIN?

c# - 任何人都可以看到我重定向这些进程的输出的方式有问题吗?

c# - 对多个 ControlCollection 进行 Foreach

java - 使用 ebean 或 hibernate 将值插入到一对一映射注释中

frameworks - 使用部分类的 Entity Framework POCO 中的业务逻辑?

c# - NHibernate 无法匹配 DateTime 对象

orm - 如何使用 dapper orm 执行批处理操作?

php - Laravel 4 - 外键约束失败

c++ - Live555 客户端流媒体内存泄漏

asp.net-mvc - 使用 MS MVC 和 DDD,如何以及在哪里定义涉及实体、值对象和一些额外字段的 MVC ActionMethod 参数类?