2009-07-21 73 views
1

我有實體用戶與UserToUserCategories一對多的關係。當我從數據庫加載用戶時,不要改變它並刷新會話,NHibernate將執行用戶的UPDATE並增加它的版本。在我看來,這是不想要的行爲,想象我加載了數百個用戶,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 

這個映射是否不正確?我錯過了什麼?

回答