0

Fluent nHibernate(nHibernate 3)を使用して同じデータベースに接続するWindowsサービスとASP.NETMVC2アプリケーションがあります。

エンティティの1つ(プロファイルと呼ばれる)には、画像へのURLを含む文字列プロパティがあります。

このプロパティはランダムにその値を失い、何が原因であるかを理解できません。ユーザーはMVCフロントエンドを介してこれを更新しますが、私の直感では、Windowsサービスがエンティティの古いインスタンスでその値を上書きしています(Windowsサービスは同じクラスの別のプロパティを更新します)。

誰かがこれをデバッグする方法または並行性を管理するための最良の方法について説明/支援してもらえますか?私はこの件について読みましたが、nHibernateでの楽観的および悲観的なロックについて混乱しています。

敬具

サム

4

1 に答える 1

0

<version/>オプションは、オプティミスティックロックで使用できます。これにより、パフォーマンスの問題は発生せず、結果が希望どおりになると確信できます。あるエージェントが以前に更新した別のエージェントのレコードを更新しようとすると、そのエージェントは失敗します。もちろん、なんらかの方法でその例外を処理する必要がありますが、少なくともダーティな更新/読み取りはありません。<version/> touを使用するには、バージョンを管理するためにテーブルに列を追加する必要があります。標準のNHマッピングでは、ドキュメントは次のとおりです。

<version
        column="version_column"                            
        name="PropertyName"                                
        type="typename"                                    
        access="field|property|nosetter|ClassName"         
        unsaved-value="null|negative|undefined|value"      
        generated="never|always"                           
/>
于 2012-11-02T15:48:00.870 に答える