2009-07-21 6 views
1

J'ai une entité Utilisateur avec une relation un-à-plusieurs à UserToUserCategories. Lorsque je charge l'utilisateur à partir de la base de données, ne le changez pas et que vider la session, NHibernate effectuera UPDATE de l'utilisateur et incrémenter sa version. Il me semble que comportement indésirable, imaginez que je charge des centaines d'utilisateurs et NHibernate les mettrait à jour tous lors du rinçage.Version de mise à jour de NHibernate lorsque l'entité n'a pas été modifiée

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 

Cette correspondance est-elle incorrecte? Qu'est-ce que je rate?

Répondre

Questions connexes