行が更新される前Posts
に、テーブルへのレコード全体の変更を保存して、テーブルを監査したいと考えています。エンティティは、列とともにすべてのエンティティ列を格納する必要があります。PostRevisions
Post
PostRevision
Post
RevisionId
これを Fluent NHibernate でマッピングしたいと思います。PostRevision
エンティティはエンティティのプロパティをミラーリングする必要がありますがPost
、2 つのエンティティ クラスとマッピング クラスを維持する必要はありません。
これを実現するには、エンティティとマッピングをどのように設計すればよいですか?
Post Edit に必要な疑似コード
var post = _unitOfWork.CurrentSession.Get<Post>(id);
var postRevision = new PostRevision(post);
post.Content = "changed value"; // change some things here
_unitOfWork.CurrentSession.Save(post);
_unitOfWork.CurrentSession.Save(postRevision);
_unitOfWork.Commit();
PostRevision
構成クラス:
public class PostRevision
{
public virtual Guid Id { get; private set; }
public virtual Post Post { get; set; }
public PostRevision()
{
}
public PostRevision(Post post)
{
this.Post = post;
}
}
流暢なマッピングの可能性:
public class PostRevisionMap : ClassMap<PostRevision>
{
public PostRevisionMap()
{
Id(x => x.Id);
Component(x => x.Post); // will something like this work?
}
}