2011-11-29 51 views
4

如果我有一个Order实体与版本列映射(由nhibernate递增),则正确读取文档,则对命令行的更改应更新聚合根(订单)的版本号, 。它确实在添加/删除订单行时执行此操作,但如果仅更改订单行上的数量,则不更新订单版本。这是预期的行为?版本在更新子项时不会增加

我检查了NH源,并且它在尝试确定是否需要版本增量时仅检查脏集合,并且集合在添加/删除项目时只会变脏,如果集合中的任何项目是脏的。

我有以下映射:

public class OrderMap : ClassMap<Order> 
{ 
    public OrderMap() 
    { 
     Id(c => c.Id).GeneratedBy.GuidComb(); 
     Version(c => c.Version); 
     OptimisticLock.Version(); 
     HasMany(x => x.OrderLines) 
      .Inverse() 
      .Cascade.AllDeleteOrphan(); 
    } 
} 

public class OrderLineMap : ClassMap<OrderLine> 
{ 
    public OrderLineMap() 
    { 
     Id(x => x.Id).GeneratedBy.GuidComb(); 
     Map(x => x.Quantity); 
     References(x => x.Order); 
    } 
} 

所以我的问题是,如果这是预期的行为?也就是说,只有在使用remove/add修改子集合时修改子实体时,该版本才会更新。它有点破坏了聚合根并发模型。

回答

相关问题