NHibernate的克服NotSupportedException异常(NHibernate Ov

2019-07-29 23:55发布

有谁知道有什么方法可以克服NotSupportedException异常? 我对用户的方法:

 public virtual bool IsAbove(User otherUser)
 {
     return HeirarchyString.StartsWith(otherUser.HeirarchyString);
 }

我想做的事:

_session.Query<User>.Where(x => loggedInUser.IsAbove(x));

但是,这引发NotSupportedException。 真正的痛苦是,虽然使用

_session.Query<User>.Where(x => loggedInUser.HeirarchyString.StartsWith(x.HeirarchyString));

作品精绝。 我不喜欢这样的解决方案,但是,因为这意味着,如果我改变IsAbove方法是如何工作的,我要记住,我有重复的代码的所有地方,每当我想更新

Answer 1:

命名规范表达和重用,例如:

public Expression<Func<....>> IsAboveSpecification = (...) => ...;

public virtual bool IsAbove(User otherUser)
{
    return IsAboveSpecification(HeirarchyString, otherUser.HeirarchyString);
}

根据需要在查询重用IsAboveSpecification。 如果IsAbove()方法经常被用来使用可以缓存在表达式编译()方法的结果。



文章来源: NHibernate Overcoming NotSupportedException