2011-06-06 90 views
0

實體框架是否天生支持任何類型的更改跟蹤在檢測數據庫中的哪些記錄是在某個日期x之後添加的,哪些是在某個日期x之前添加的?我知道它支持跟蹤實體本身屬性的變化,但我認爲這有點不同。實體框架基於推送的更改跟蹤

如果不是在實體框架中,我想知道什麼將建議一個簡單的方法來實現這一點。

這種情況會發生在每小時發生自動推送式數據傳輸,每次啓動一次推送時,服務器必須知道自上次推送以來添加了哪些記錄,並推送這些記錄。

有沒有人知道一個標準和可靠的方法呢?我已經創建了我自己的解決方案(看主鍵,DateTime列等),但寧願不要重新發明輪子。

回答

2

您正在查找的功能正好是Change Tracking(跟蹤像情景一樣更改同步的行)和/或Change Data Capture(跟蹤更多複雜場景(如審覈)的確切更改,包括數據更改前的圖像。在Comparing Change Data Capture and Change Tracking有兩個比較,它們也包括這兩個地址中的每一個的主要場景。請注意,'自行滾動'不起作用,因爲您需要引擎中的特殊支持來檢測某些類型的更改,或防止可能導致打破更改跟蹤的操作。

實體框架與這些操作無關。

0

我不認爲實體框架提供了你在找什麼。我可以想到兩種解決方案(假設您使用的是MS SQL Server):

使用rowversion列,並讓您​​的更新檢查路由更新另一列以當前rowversion。如果更改檢查路由再次運行,則rowversion與rowversioncopy不匹配,您知道它已被修改。這可能是也可能不是一種可行的方法,具體取決於您處理的行數。

另一種方法是在表上使用觸發器並讓它們觸發您的更改處理。

+0

謝謝生病檢查文檔。如果有一個T-SQL查詢會告訴我何時將行添加到數據庫中,您是否知道自己的頭腦?我無法修改我正在使用的表的模式,因此使用EF。不要以爲我可以添加一個rowversion列。 – 2011-06-06 23:20:24