我的所有NH实体都来自一个名为BusinessEntity的类型 具有最基本的值ID,Created,CreatedBy,Updated,UpdatedBy。
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,但这看起来非常 脏。
答案 0 :(得分:2)
NHibernate中存在一个可以使用自定义DefaultFlushEventListener修复的错误。在这里看到答案: https://stackoverflow.com/a/11575172/1389546
答案 1 :(得分:1)
我认为这可能会对你有所帮助。该错误源于PreUpdateEventListener。我回来时遇到了同样的问题。