未更改实体时NHibernate更新版本

未更改实体时NHibernate更新版本,nhibernate,fluent-nhibernate,Nhibernate,Fluent Nhibernate,我拥有与UserToUserCategories具有一对多关系的实体用户。当我从数据库加载用户时,不要更改它,然后刷新会话,NHibernate将执行用户更新并增加其版本。在我看来,这似乎是不必要的行为,想象一下,我加载了数百个用户,NHibernate会在刷新时更新所有用户 public abstract class EntityBase { public virtual Guid Id { get; set; } public virtual int Version { ge

我拥有与UserToUserCategories具有一对多关系的实体用户。当我从数据库加载用户时,不要更改它,然后刷新会话,NHibernate将执行用户更新并增加其版本。在我看来,这似乎是不必要的行为,想象一下,我加载了数百个用户,NHibernate会在刷新时更新所有用户

public abstract class EntityBase
{
    public virtual Guid Id { get; set; }
    public virtual int Version { get; set; }
}

public class User : EntityBase
{
    public virtual IList<UserToUserCategory> UserToUserCategories { get; set; }
}

public class EntityBaseMap<T> : ClassMap<T> where T : EntityBase
{
    public EntityBaseMap()
    {
        this.OptimisticLock.Version();
        this.DynamicUpdate();
        this.Id(t => t.Id);
        this.Version(t => t.Version);
    }
}

public class UserMap : EntityBaseMap<User>
{
    public UserMap()
    {
        this.HasMany(u => u.UserToUserCategories)
            .NotFound.Ignore()
            .Cascade.All()
            .LazyLoad()
            .AsBag()
            .WithTableName("UserToUserCategory");
    }
}


session = SessionSource.CreateSession();
var user = (from u in session.Linq<User>() select u).FirstOrDefault();
session.Flush(); // here NHibernate does UPDATE statement of user's version
公共抽象类EntityBase
{
公共虚拟Guid Id{get;set;}
公共虚拟整数版本{get;set;}
}
公共类用户:EntityBase
{
公共虚拟IList UserToUserCategories{get;set;}
}
公共类EntityBaseMap:ClassMap,其中T:EntityBase
{
公共实体BaseMap()
{
这个.OptimisticLock.Version();
这个.DynamicUpdate();
this.Id(t=>t.Id);
这个.Version(t=>t.Version);
}
}
公共类UserMap:EntityBaseMap
{
公共用户映射()
{
this.HasMany(u=>u.UserToUserCategories)
.NotFound.Ignore()
.Cascade.All()
.LazyLoad()
.AsBag()
.WithTableName(“UserToUserCategory”);
}
}
session=SessionSource.CreateSession();
var user=(从会话中的u.Linq()选择u.FirstOrDefault();
session.Flush();//在这里,NHibernate会更新用户版本的声明

这个映射不正确吗?我遗漏了什么?

如果有人会搜索这样的问题,答案是: