2013-05-10 31 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; 
     } 
    }