0

アプリケーションで以前のバージョンのエンティティを保持できるようにしようとしています。

たとえば、Bookバージョン 1 またはバージョン 5 などで取得できるようにしたい場合...

public class Book
{
    public virtual int ID {get; set;}
    public virtual string Name {get; set;}
    public virtual int Version {get; set;}
}

バージョン列を次のようにマッピングします。

Version(x=>x.Version);

これは機能しています。挿入されると、バージョンは 1 です。
そのエンティティを ID でプルバックし、編集して保存すると、バージョンは 2 に増加します。

私の質問は、以前のバージョンを保持するにはどうすればよいですか?

ID にある種のコンポジットを疑っています | バージョン...?

4

2 に答える 2

3

Anton Gogolev が指摘したように、バージョン プロパティ/列は監査用ではなく、同時実行制御用です。

NHibernate Enversは、ニーズに合った NHibernate 用のサード パーティの監査ライブラリです。

于 2012-11-12T16:20:19.857 に答える
0

Versionコンストラクトは、以前のバージョンのエンティティを格納するためではなく、楽観的同時実行制御を実装するために使用されます

完全なバージョン管理を実装するには、別の挿入専用BookRevisionテーブルを用意するか、流行りの CQRS/ES を使用する必要があります。

于 2012-11-12T16:00:33.247 に答える