Обновление версии NHibernate, когда сущность не была изменена - PullRequest
1 голос
/ 21 июля 2009

У меня есть сущность Пользователь с отношением один-ко-многим к 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

Это отображение неверно? Чего мне не хватает?

1 Ответ

3 голосов
/ 22 июля 2009

Если кто-то будет искать такую ​​проблему, есть ответ: http://groups.google.com/group/nhusers/browse_thread/thread/9459d4e16581209

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...