2010-07-14 116 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)。