面向对象编程语言中的关系特性

时间:2010-07-14 12:46:44

标签: oop relational

除了Linq之外,是否还有其他尝试将关系功能集成到面向对象的语言中,而不仅仅是库?

更新 最明显的例子是一对一,一对多或多对多的关系。然后,您还可以考虑具有属性的关系。

2 个答案:

答案 0 :(得分:3)

据我所知。事实上,LINQ本身并不是特别“关系”的原始“Codd”这个词。 (SQL也不是,但这是另一个故事。)

只是为了设定基调,LINQ甚至没有关系的概念(松散地说,一组符合标题的名称/值元组,这是一个名称/类型元组)。它处理序列而不是集合和对象而不是元组。即使匿名对象与关系模型意义上的命名元组也不同,因为new { b = 2, a = 1 }不仅不等于new { a = 1, b = 2 },它们甚至不是同一类型!

公平地说,LINQ是对过去40年数据访问列车残骸的巨大改进,但它只是向正确方向迈出了一小步,我怀疑无意采取任何进一步的措施。实际上,LINQ-to-EF在我看来是向错误的方向迈出了一大步,朝向OO建模并远离关系模型(当然,并非每个人都会同意我的观点; - )。

答案 1 :(得分:0)

postgres中有嵌入式SQL C http://www.postgresql.org/docs/8.4/interactive/ecpg.html

但我自己从未使用过它。

在大多数情况下,一个简单的库可以很好地访问SQL数据库,并提供了“关系”和面向对象世界之间的良好分离(尽管如Marcelo Cantos所说,SQL实际上并不是原始理论中的关系感..)。

但是,也许你正在寻找在关系和面向对象之间“映射”的东西?有一种称为面向对象的映射技术可以为关系数据库创建某种面向对象的视图(参见http://en.wikipedia.org/wiki/Object-relational_mapping)。但要注意,这可能听起来不错,但实际上会产生一些问题(详见http://en.wikipedia.org/wiki/Object-relational_impedance_mismatch)。