.NET数据集与业务对象:争论的原因是什么?为什么不把两者结合起来?

时间:2009-08-08 09:56:00

标签: orm ado.net dataset

我在评论herecurrent live site, without comments)中阅读了辩论。

为什么要辩论?对我来说,数据集就像一个关系数据库,一个对象是一个类似层次结构的模型。为什么人们绝对想要一个“纯粹的”对象模型,而我们仍然处理关系数据库,那么为什么不将它们结合起来呢?

如果我们应该,是否有任何轻量级,全面的框架可以让我们这样做(不是像NHibernate这样有着巨大学习曲线的重型猛犸象)?

4 个答案:

答案 0 :(得分:4)

“Pure objects”更容易使用,类型化对象为您提供智能感知和编译时类型检查。

裸数据集非常繁琐且令人讨厌 - 你需要知道列名,不能进行类型检查,所以如果你输错了列名,那你就运气不好,直到发现错误为止运行时(最糟糕的情况)。

键入的数据集是朝着正确方向迈出的一步,但是您在.NET代码中使用的“事物”仍然与数据库实现紧密相关 - 这通常不是一件好事,因为底层的任何变化数据库可能会影响您的应用程序一直到您的用户界面,并导致需要进行大量更改。

使用像NHibernate这样的ORM可以让你更好地从逻辑业务模型中抽象和分离数据库(物理存储)层 - 只有在最简单的场景中,这两者才是完全匹配的1:1,所以你需要无论如何,某种“翻译”或两者之间的映射。

总而言之 - 使用类型化数据集对于小型,简单的应用程序可能没问题,但对于具有挑战性的,规模较大的企业级业务应用程序,我绝不会建议将业务对象模型如此紧密地绑定到数据库中。

马克

答案 1 :(得分:0)

  

为什么人们绝对想要“纯粹的”对象模型

因为您不希望您的应用程序依赖于数据库架构

答案 2 :(得分:0)

嗯,你给出的所有理由都与Java中用于EJB的学术原因相同,这在过去是个烂摊子。所以,不是人们陷入另一种时髦的炒作吗?

我在这里读到: http://blogs.tedneward.com/2006/06/26/The+Vietnam+Of+Computer+Science.aspx

承诺是一回事,现实是另一回事。

索赔的证明在哪里?

科学地说,复杂性对熵的概念很紧张,你不能减少事物的固有复杂性,你可以把它移到其他地方,所以对我来说有一些从根本上是理性的。

答案 3 :(得分:0)

Ted Newards引起极大争议,因为在我看来,每个人都像在旧的EJB时代那样放牧:在Rod Johnson退出Hibernate之前,没有人敢说EJB糟透了。

现在似乎没有人关心如Hibernate,Entity Framework等ORM框架太复杂了,因为可能还没有另一个Rod Johnson II:)

你假装添加一个新的层解决了这个问题,但是在某种程度上并非总是如此,比如在项目变得混乱时增加更多的团队成员,因为增加更多程序员也意味着增加协调和沟通问题。

在实践中,看起来,至少从GUI角度来看应该独立的层并不是真的。我看到很多人在使用ORM时很难在GUI中做简单的事情。