2010-07-14 115 views
1

除了Linq之外,他们还有其他尝试将关系特性集成到面向对象的语言本身中,而不仅仅是库吗?面向对象编程语言中的关系特征

UPDATE 关于最明显的例子是一对一,一对多或多对多关系。那么你也可以考虑自己拥有属性的关系。

+0

定义'关系特征' – 2010-07-14 12:52:50

回答

3

不是我所知。事实上,LINQ本身并不是特别的“关系”,在原来的“Codd”这个词的意义上。 (SQL也不是,但那是另一回事)

只是为了设置语气,LINQ甚至没有关系的概念(松散地说,一组符合标题的名称/值元组,它是一个名称/类型元组)。它处理的是序列而不是集合和对象,而不是元组。即使匿名对象与关系模型意义上的命名元组也不相同,因为new { b = 2, a = 1 }不仅等于new { a = 1, b = 2 },它们甚至不是相同的类型!为了公平起见,LINQ对过去40年的数据访问列车残骸进行了巨大的改进,但这只是朝正确方向迈出的微小的一步,我怀疑无意采取任何进一步行动脚步。事实上,LINQ-to-EF在我看来是向错误方向迈出的巨大一步,走向OO建模并远离关系模型(当然,并非所有人都会同意我的看法;-)。

0

在C中嵌入式SQL Postgres的: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)。