2014-01-16 14 views
0

訪問只讀外部系統時,ORM如何工作? 說例如我創建了一個訂購系統,它有自己的數據庫,可以通過我的應用程序的ORM層訪問。這個系統的一部分是通過SQL調用(沒有可用的Web服務)來檢查外部系統,以獲取產品/庫存等信息。將ORM與外部只讀系統結合使用

是否有可能系統的這部分使用ORM,或者您必須自己編寫差異類來訪問數據和返回對象,例如ORM返回的對象?我想這樣做,更高層不需要知道手邊的產品/庫存來自單獨的系統。

任何輸入讚賞

回答

1

在過去,當我不得不面對像你這樣的設置,我創建的本地數據庫(SQL Server)的觀點,即從遠程數據庫中讀取數據。然後我爲視圖生成包裝數據對象(實體框架中的實體)。

每次需要從遠程數據源獲取數據時,都會使用生成的ORM對象訪問視圖的數據對象,以便像其他任何本地調用一樣通過ORM框架進行調用。

遠程數據源可以通過OPENDATASOURCE設置爲鏈接服務器,也可以是同一臺服務器上的不同數據庫(這是針對SQL Server的)。可能有其他選項我沒有考慮,其他數據庫可能支持不同的設置。

因此,遠程數據顯示爲本地數據 - 就ORM框架而言,數據來自作爲框架一部分的數據對象。真正的遠程處理髮生在數據庫視圖中。正因爲如此,遠程數據和本地數據的高級應用程序沒有區別。這種方法適用於實體框架/ .NET以及我幾年前使用的方法,並且我確信其他ORM框架能夠使用此方法(在其他平臺上)。

+0

謝謝。那麼您將遠程數據源設置爲鏈接服務器? – Lock

+0

@鎖定使用SQL Server是的。也有可能使用相同的服務器,但數據位於不同的數據庫中 - 在這種情況下,您只需使用完全限定的名稱引用遠程表。存儲過程也是如此 - 它們可以是ORM本地的,但可以轉到遠程服務器/數據庫。 – xxbbcc