2009-05-21 74 views
1

相關問題here對長時間運行環境有良好支持的ORM

對於針對現有上下文運行查詢的大多數ORM,它不會返回自數據庫首次返回對象以來發生更改的數據。它將查詢發佈到數據庫,但不會返回對數據庫所做的任何更改,因爲上下文不希望踩到對象(有關Linq到SQL中的這種行爲的討論,請參閱here)。對於使用工作單元模式的短期上下文來說這很好,但如果你使用長壽命的上下文,那麼這種情況就不那麼好了。

我已經嘗試Linq SQL和實體框架,這兩個框架提供了一種刷新方法,可以讓你指定一個枚舉參數來覆蓋上下文中的現有對象,但這不會拿起新的記錄(至少不是沒有額外的查詢),更重要的是不會刪除已從數據庫中刪除的記錄的對象。

我知道我可以放棄上下文和現有的對象,但我不想這樣做,因爲對象綁定到應用程序中的其他元素。

是否有任何ORM能夠使用數據庫的最新數據刷新對象,爲新創建的對象添加對象並刪除已從數據庫中刪除的記錄的對象,理想情況下以高效方式(即使用MS SQL rowversion列)。

回答

0

檢查這個ORM: 「http://entityorm.uuuq.com

你必須在網站

  • 基本例如它是如何工作的;
  • 完整的文檔和pdf手冊中的示例;
  • 論壇;
  • 支持的數據庫(無限制,因爲你可以讓你的驅動程序)。
1

我不確定,但看起來你需要類似於DataObjects.Net的行爲。它們的實體是長時間存活的會話綁定對象,它們將數據存儲在事務狀態中。當您打開新的事務並讀取現有對象的持久屬性時,它們會自動從數據庫中獲取它(它也涉及EntitySet屬性)。

當然,您應該對每個事務執行復雜的查詢以將查詢結果保持爲實際狀態,但我認爲它可以很容易地自動化。

相關問題