0

有沒有方法可以找出我的對象上已更改的字段。實體框架中的字段更改跟蹤

示例問題:當某個日期字段被更改並且正在保存更改時,自定義一些自定義邏輯應該應用於相關對象。

我想在context.SaveChanges();之前做,但ObjectStateManager並沒有給我所需要的所有信息。

+0

您的域對象是如何生成的?您可能希望查看自我跟蹤實體,生成的代碼具有對象更改跟蹤器和事件掛鉤,以便您可能要使用的屬性修改。 – Mahol25

+0

我正在使用POCO的,但事情是我必須對特定領域的變化做出迴應。就我所見,ObjectStateManager不提供這種功能。 –

回答

1

爲什麼要使用ObjectStateManager呢?你有擁有getter和setter的實體,只需將該邏輯觸發器放入setter中即可。您還可以在您的實體上實施INotifyPropertyChanged,並在您的所需屬性更改爲實體外時處理事件。

否則,您必須使用ObjectStateManager得到ObjectStateEntry爲實體並比較它的CurrentValuesOriginalValues。但這主要是錯誤的方法。邏輯應該由實體中的代碼觸發。

+0

即使第二種解決方案是「髒」,我想我會去用它。有一些相關數據正在進行批量處理,需要在保存之前完成。謝謝你的回答。你總是提供好的解決方案:) –