2012-01-14 16 views
0

"エンティティの履歴"を実行するためのソリューションを探しています。 は基本的に私はこのようなドメインをしました:NHibernateを使用して新しいエンティティをバージョンで挿入することによってエンティティをバージョニングする

public class Order 
{ 
    public virtual int OrderId { get; set; } 
    public virtual DateTime Date { get; set; } 
    public virtual ICollection<OrderItem> Items { get; set; } 

    public virtual int Version { get; set; } 
} 

public class OrderItem 
{ 
    public virtual int OrderItemId { get; set; } 
    public virtual Order Order { get; set; } 
    public virtual Product Product { get; set; } 
    public virtual int Quantity { get; set; } 

    public virtual int Version { get; set; } 
} 

は、私は、製品の変更などの依存エンティティの更新を防ぐために、これらのエンティティの履歴を保持する必要があります(名前、等。)

ので、私はしたいです各保存/更新時に更新されたバージョン番号で新しいエンティティを作成します。

私のリポジトリメソッドGetOrderByIdは、エンティティのバージョンを管理し、指定されている場合は最新のバージョンまたは特定のバージョンを取得する必要があります。

どうすればいいですか?おそらくNHibernateインターセプタを使用していますか?

答えて

0

偶数リスナーを使用できます。あなたはそれを使用して、負荷に対して異なる動作を得、保存/削除/更新することができます。

Eventlisteners for data audit

0
<version name="Version" column="Version" access="nosetter.camelcase-underscore" type="Int64"/> 

これは、ルートオブジェクト

Concurrency

Version

に実装をバージョン管理しているのがベストだろう
関連する問題