我正在开发一个社交应用程序,它将为用户提供创建消息墙(如在 FB 上)并邀请他们的朋友。我的数据库中有一个表,其中包含墙壁及其版本(在 TimeStamp 中),这意味着 - 它们的最后更新时间。
当有人更新墙时,版本将被更新,我希望用户收到此版本。我正在使用 NHibernate 并将我的版本行定义为版本类型,但我找不到更新行并在一个原子操作中接收新版本的方法,以防止并发问题。
有没有办法做到这一点?有没有更好的方法来解决这个问题?
我正在开发一个社交应用程序,它将为用户提供创建消息墙(如在 FB 上)并邀请他们的朋友。我的数据库中有一个表,其中包含墙壁及其版本(在 TimeStamp 中),这意味着 - 它们的最后更新时间。
当有人更新墙时,版本将被更新,我希望用户收到此版本。我正在使用 NHibernate 并将我的版本行定义为版本类型,但我找不到更新行并在一个原子操作中接收新版本的方法,以防止并发问题。
有没有办法做到这一点?有没有更好的方法来解决这个问题?
基础实体,
public abstract class AuditBase
{
private int? _rowVersion = 0;
public virtual int? RowVersion
{
get { return _rowVersion; }
set { _rowVersion = value; }
}
}
该实体,
public partial class AXSERVICES : AuditBase
{}
你可以DefaultUpdateEventListener
试试DefaultSaveEventListener
例如
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;
}
}