0

私はソーシャル アプリを開発しています。これは、ユーザーがメッセージ (FB など) の壁を作成し、友達を招待できるようにするものです。DB に壁とそのバージョン (TimeStamp) を含むテーブルがあります。つまり、最終更新時刻です。

誰かが壁を更新すると、バージョンが更新されるので、ユーザーにこのバージョンを受け取ってもらいたいです。私は NHibernate を使用しており、バージョンの行をバージョンの型に定義しましたが、同時実行の問題を防ぐために、行を更新し、新しいバージョンを 1 つのアトミック アクションで受け取る方法が見つかりませんでした。

これを行う方法はありますか?この問題を解決するより良い方法はありますか?

4

1 に答える 1

0

基本エンティティ、

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;
        }
    }
于 2013-05-10T11:03:55.140 に答える