有谁知道克服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方法的工作方式,我就必须记住每当我想要更新它时复制代码的所有位置
发布于 2012-06-18 17:24:13
命名规范表达式并重用它,例如:
public Expression<Func<....>> IsAboveSpecification = (...) => ...;
public virtual bool IsAbove(User otherUser)
{
return IsAboveSpecification(HeirarchyString, otherUser.HeirarchyString);
}根据需要在查询中重用IsAboveSpecification。如果经常使用IsAbove()方法,则可以缓存表达式上的Compile()方法的结果。
https://stackoverflow.com/questions/11079852
复制相似问题