如何使用NHibernate更新實體並忽略它們的值爲空(在更新的實體中)時的某些屬性?
如果屬性值不爲空,它應該包含在更新中。Nhibernate流利在條件更新時忽略屬性
實施例,與具有Id
和Name
的實體:
- 如果名字是空我們更新而不名的實體。
- 如果名稱不爲空,我們用名稱更新實體。
如何使用NHibernate更新實體並忽略它們的值爲空(在更新的實體中)時的某些屬性?
如果屬性值不爲空,它應該包含在更新中。Nhibernate流利在條件更新時忽略屬性
實施例,與具有Id
和Name
的實體:
你需要做兩兩件事:
dynamic-update="true"
。可能有一些適當的類映射方法需要流利地進行調用。使用interceptor或event來定製骯髒檢查算法。關於堆棧溢出的一些答案,如this one和other one (from me)。 如果我理解你的話,我需要調用db來攔截,所以它的意思是我在更新之前從db中檢索數據。有沒有什麼辦法可以做到這一點,而不需要從數據庫中檢索實體? –
@ItayGolan,你不需要明確地做,NHibernate會在分離的實體上調用'ISession.Update()'的時候爲你做。 (如果你已經在會話中加載了實體,然後嘗試用分離的版本更新它,請使用'Merge')。如果你不想讓NHibernate加載實體來更新它,你可以使用[tag:hql ]按照解釋[這裏]更新查詢(http://nhibernate.info/doc/nhibernate-reference/batch.html#batch-direct)。但這不是使用ORM的通常模式。 –
你有沒有嘗試過自己呢?此平臺旨在幫助您創建,而不是爲您創建。 –
如果名稱列可以爲空,則您將獲得此功能。或者我錯過了你的問題的重點? –
當然,我嘗試過的東西之前,但我找不到任何網站 –