【问题标题】:Versioning Entity By Inserting en New Entity With Version Using NHibernate通过使用 NHibernate 插入带有版本的新实体来对实体进行版本控制
【发布时间】:2012-01-14 23:55:33
【问题描述】:

我正在寻找一种解决方案来执行一些“实体历史记录”。 基本上我有一个这样的域:

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

【问题讨论】:

    标签: c# nhibernate


    【解决方案1】:

    您可以使用均匀监听器。您可以使用它来获得加载和保存/删除/更新的不同行为。

    Eventlisteners for data audit

    【讨论】:

      【解决方案2】:
      <version name="Version" column="Version" access="nosetter.camelcase-underscore" type="Int64"/>
      

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

      Concurrency

      Version

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-03-10
        • 2011-02-23
        • 1970-01-01
        • 1970-01-01
        • 2012-06-18
        • 2016-01-29
        相关资源
        最近更新 更多