gpt4 book ai didi

linq - NHibernate 克服 NotSupportedException

转载 作者:行者123 更新时间:2023-12-04 15:35:45 29 4
gpt4 key购买 nike

有谁知道有什么方法可以克服 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 方法的工作方式,则每当我想更新代码时,我都必须记住我复制代码的所有位置

最佳答案

命名规范表达式并重用它,例如:

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

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

根据需要在查询中重用 IsAboveSpecification。如果经常使用 IsAbove() 方法,则可以在表达式上缓存 Compile() 方法的结果。

关于linq - NHibernate 克服 NotSupportedException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11079852/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com