Коллекция исключений NHibernate [..User.Groups] не была обработана flush () - PullRequest
6 голосов
/ 06 января 2010

Все мои сущности NH происходят от типа BusinessEntity, это имеет базовые значения ID, Создано, Создано, Обновлено, Обновлено.

CreatedBy / updatedBy принимает пользователя

У меня есть IPreUpdateEventListener и IPreInsertEventListener, которые запускают чтобы получить текущий DateTime для значений аудита. Также здесь у меня есть моя логика, чтобы получить текущий пользователь работает, который я хватаю, запустив Критерий запроса по принципу пользователя Windows. Из чего я понял из всего поста в группе пользователей NH на эту тему мои потребности в классе пользователей быть загруженным для того, чтобы это работало правильно в моих EventListeners вот как я загружаю пользователя

public User GetByDomainPrinciple(string domainPrinciple)
{
    var domainPrincipleCriteria = DetachedCriteria.For<User>()
        .Add(Restrictions.Eq("DomainPrinciple", domainPrinciple))
        .SetFetchMode("Roles", FetchMode.Eager)
        .SetFetchMode("Groups", FetchMode.Eager)
        .SetFetchMode("Groups.Roles", FetchMode.Eager)
        .SetCacheable(true);

    return Repository.QuerySingle(domainPrincipleCriteria);
}

Repository.QuerySingle(domainPrincipleCriteria); это просто

return detachedCriteria
.GetExecutableCriteria(_conversation.Session).UniqueResult<T>();

Я что-то упустил или мой запрос критерия неверен? Я думаю абсолют в худшем случае я мог бы изменить CreatedBy на Guid вместо Пользователь и просто вручную назначить FK, как это, но это кажется очень грязный.

Ответы [ 2 ]

2 голосов
/ 20 июля 2012

В NHibernate была ошибка, которую можно исправить с помощью пользовательского DefaultFlushEventListener. Смотрите ответ здесь: https://stackoverflow.com/a/11575172/1389546

1 голос
/ 08 января 2010

Я думаю, что это может помочь вам. Ошибка происходит от PreUpdateEventListener. У меня была такая же проблема, пока я возвращался.

http://ayende.com/Blog/archive/2009/04/29/nhibernate-ipreupdateeventlistener-amp-ipreinserteventlistener.aspx

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