关系数据库和OO语言

时间:2009-04-26 18:02:20

标签: c# .net linq

在典型的ASP.NET Web应用程序体系结构中,我们使用的是OO语言(如C#)和关系数据库(如SQL Server)来处理数据。

我正在读一本关于Linq的书,上面写着“问题是OO编程语言与关系数据库之间存在差距”

作者究竟想要暗示什么?

修改: 谢谢你的回答。我不确定我理解LINQ如何解决这个问题。我可能错了,但似乎LINQ是用于数据库通信的API,就像ADO.NET

一样

4 个答案:

答案 0 :(得分:6)

他们是非常不同的数据模型和做事方式。这是一个非常宗教的论点,没有任何季度,也没有任何怜悯。

一切都在这里:Object-relational impedance mismatch

答案 1 :(得分:3)

面向对象编程是关于有效建模行为的。关系模型是关于有效地建模数据。

这导致了非常不同的模型,这些模型在某些领域是不兼容的。它被称为物体关系阻抗不匹配。 Google it

Ted Neward写了一篇非常好的文章,名为The Vietnam of computer science。如果你愿意,你可以忽略大部分的越南部分。

至于LINQ如何适应方程:它并没有解决不匹配问题,但它提供了一种方法,可以更轻松地与数据库进行通信,从而减轻至少部分痛苦。

答案 2 :(得分:0)

答案 3 :(得分:0)

RDBMS的一个基石是规范化 - 出于我的观点,从来没有相同的数据位不止一个地方。

对于对象,可以合理地假设您的SalesInvoice obj可能由多个发票行对象和客户对象,交货地址等以及随附的方法组成。

在一个和另一个之间跳跃是很困难的。以交货地址为例,我们将其存储在销售发票表中,如果与客户相同,如果不同,该怎么办?我们有送货地址表。

这是一个复杂的问题。