通过使用NHibernate插入具有版本的新实体来对实体进行版本控制

本文关键字:实体 版本控制 新实体 NHibernate 插入 版本 | 更新日期: 2023-09-27 18:20:14

我正在寻找一个解决方案,以便执行一些"实体历史记录"。基本上我有一个这样的域:

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拦截器?

通过使用NHibernate插入具有版本的新实体来对实体进行版本控制

您可以使用evenlistener。您可以使用它来获取加载和保存/删除/更新的不同行为。

数据审计的事件监听器

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

最好在根对象上实现版本控制

并发

版本