2013-05-10 76 views
0

我正在開發一個社交應用程序,它將爲用戶提供創建消息的牆(如FB)並邀請他們的朋友。我在我的數據庫中有一個表格,其中包含牆壁及其版本(在TimeStamp中),意思是 - 它們的最後更新時間。在NHibernate中行版本控制

當有人更新牆壁時,版本將會更新,我希望用戶能夠收到此版本。我使用NHibernate並將版本行定義爲版本類型,但我無法找到更新行並在一個原子操作中接收新版本的方法,以防止出現併發問題。

有沒有辦法做到這一點?有沒有更好的方法來解決這個問題?

+0

更新是事務性的。你可能會遇到哪些併發問題? – 2013-05-10 14:16:28

+0

我不知道。我只是想要一個不會導致這種問題的解決方案。 – Lidor 2013-05-11 22:03:35

回答

0

基礎機構,

public abstract class AuditBase 
{  
    private int? _rowVersion = 0; 

    public virtual int? RowVersion 
    { 
     get { return _rowVersion; } 
     set { _rowVersion = value; } 
    } 
} 

實體,

public partial class AXSERVICES : AuditBase 
{} 

你可以嘗試DefaultUpdateEventListenerDefaultSaveEventListener

例如

public class CustomSaveEventListener : DefaultSaveEventListener 
{ 

    protected override object PerformSave(object entity, object id, IEntityPersister persister, bool useIdentityColumn, object anything, IEventSource source, bool requiresImmediateIdAccess) 
    { 
     ((AuditBase)entity).RowVersion = 0; 
     object obj = base.PerformSave(entity, id, persister, useIdentityColumn, anything, source, requiresImmediateIdAccess); 

return obj; 
     } 
    }