[英]NHibernate - Is there a way to prevent version increment?
出於性能原因,有時我想更新實體而沒有任何版本增量(或版本檢查)。 使用LINQ TO SQL,我只是保留了該版本不變,並且運行良好。 在NHibernate中這種行為可能嗎?
一些修改不是很重要。 所以我只想最后一次獲勝就可以做出這些修改。
盡管事務是原子性的 ,所以我們可以按照時間順序來講,但這並不簡單,涉及事務時,要說第一個/最后一個總是有些棘手。 例如
T1: start
T1: read row X with value A
T2: start
T2: read row X with value A
T2: write row X with value A2
T2: commit
T1: write row X with value A1
T1: commit
當T2在T1之后開始時,更改A2丟失。 “最后一筆”是哪筆交易? 最后一個開始還是最后一個結束? (提交確實是原子的,但是事務仍然具有持續時間,這使它們難以推理。)
樂觀鎖定或悲觀鎖定旨在避免這種情況,以便我們可以更好地考慮交易順序。
也就是說,回到您的問題所在,如果這確實是您想要的,則可以嘗試在兩個實體中兩次映射同一數據庫表:在一個實體中,您有@version
而在另一個中則沒有。 但這可能會造成混亂。
我相信您可能不想禁用這些實體上的所有樂觀鎖定(否則就不要給它們提供版本屬性),但是您希望某些屬性不會導致版本增加。 使用“ optimistic-lock”支持該功能,請檢查: http : //nhibernate.info/doc/nh/en/index.html#mapping-declaration-property
optimistic-lock(可選-默認為true):指定對此屬性的更新需要或不需要獲取樂觀鎖。 換句話說,確定此屬性為臟時是否應增加版本。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.