通过使用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拦截器?
您可以使用evenlistener。您可以使用它来获取加载和保存/删除/更新的不同行为。
数据审计的事件监听器
<version name="Version" column="Version" access="nosetter.camelcase-underscore" type="Int64"/>
最好在根对象上实现版本控制
并发
版本