where 子句中的 LINQ to Nhibernate 用户定义函数

2024-03-20

我正在尝试执行以下操作:

var query =
    (from a in session.Query<A>()
    where a.BasicSearch(searchString) == true
    select a);

但它一直给我这个异常“System.NotSupportedException”!

知道如何解决这个问题吗?


无法在 LINQ 查询中使用用户定义的函数。 NHibernate linq 提供程序不“知道”如何将您的函数转换为 SQL。

LINQ to NHibernate 的工作原理是检查您在运行时提供的 LINQ 表达式,并将在此表达式树中找到的内容转换为常规 SQL 表达式。这是一篇很好的文章,可以了解表达式树的一些背景知识:http://blogs.msdn.com/b/charlie/archive/2008/01/31/expression-tree-basics.aspx http://blogs.msdn.com/b/charlie/archive/2008/01/31/expression-tree-basics.aspx

但是,您可以以另一种方式重用这样的谓词,使用这里讨论的技术 http://www.albahari.com/nutshell/predicatebuilder.aspx。 (不过我不确定这是否适用于 NHibernate。)如果它有效,它看起来会像这样:

// this could be a static method on class A
public static Expression<Func<A, bool>> BasicSearch(string criteria)
{
    // this is just an example, of course
    // NHibernate Linq will translate this to something like 
    // 'WHERE a.MyProperty LIKE '%@criteria%'
    return a => criteria.Contains(a.MyProperty); 
}

Usage:

from a in Session.Query<A>().Where(A.BasicSearch(criteria))

更新:显然 NHibernate 会出现问题。看这篇博文提供了一个应该可以工作的版本 http://petemontgomery.wordpress.com/2011/02/10/a-universal-predicatebuilder/.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

where 子句中的 LINQ to Nhibernate 用户定义函数 的相关文章

  • Grpc - 将消息从一个客户端发送到连接到同一服务器的另一个客户端

    是否可以将消息从一个客户端发送到连接到同一服务器的另一个客户端 我想将数据从一个客户端发送到服务器然后发送到特定客户端 我想我需要获取客户端 ID 但我不知道如何获取此 ID 以及如何从服务器将此消息发送到该客户端 我这里有一个样本 这是一
  • 转换 const void*

    我有一个函数返回一个const void 我想用它的信息作为char 我可以将它投射为 C 风格的罚款 char variable但是当我尝试使用reinterpret cast like reinterpret cast
  • 未找到 Boost 库,但编译正常

    我正在尝试在 C 中使用 boost 的文件系统 使用时看起来编译没问题 c c Analyse c o Analyse o g W Wall L usr local lib lboost filesystem lboost system
  • 循环遍历 C 结构中的元素以提取单个元素的值和数据类型

    我有一个要求 我有一个 C 语言的大结构 由大约 30 多个不同数据类型的不同元素组成 typedef struct type1 element1 type2 element2 type3 element3 type2 element4 1
  • 如何将 SOLID 原则应用到现有项目中

    我对这个问题的主观性表示歉意 但我有点卡住了 我希望之前处理过这个问题的人能够提供一些指导和建议 我有 现在已经成为 一个用 C 2 0 编写的非常大的 RESTful API 项目 并且我的一些类已经变得巨大 我的主要 API 类就是一个
  • 强制初始化模板类的静态数据成员

    关于模板类的静态数据成员未初始化存在一些问题 不幸的是 这些都没有能够帮助我解决我的具体问题的答案 我有一个模板类 它有一个静态数据成员 必须为特定类型显式实例化 即必须专门化 如果不是这种情况 使用不同的模板函数应该会导致链接器错误 这是
  • cpp.react库的C++源代码中奇怪的“->* []”表达式

    这是我在文档中找到的 C 片段cpp react 库 https github com schlangster cpp react implicit parallelism auto in D MakeVar 0 auto op1 in g
  • 如何在 C# Designer.cs 代码中使用常量字符串?

    如何在 designer cs 文件中引用常量字符串 一个直接的答案是在我的 cs 文件中创建一个私有字符串变量 然后编辑 Designer cs 文件以使用此变量 而不是对字符串进行硬编码 但设计者不喜欢这样抛出错误 我明白为什么这行不通
  • 不同 C++ 文件中的相同类名

    如果两个 C 文件具有相同名称的类的不同定义 那么当它们被编译和链接时 即使没有警告也会抛出一些东西 例如 a cc class Student public std string foo return A void foo a Stude
  • 在 .NET MAUI 中实现 TouchTracking

    我一直致力于将我们的应用程序从 Xamarin Forms 迁移到 NET MAUI 我们的应用程序几乎没有绘图功能 用户可以用手指进行绘图 我们用了TouchTrackingXamarin Forms 中的 nuget 包 但与 NET
  • 从 C# 使用 Odbc 调用 Oracle 包函数

    我在 Oracle 包中定义了一个函数 CREATE OR REPLACE PACKAGE BODY TESTUSER TESTPKG as FUNCTION testfunc n IN NUMBER RETURN NUMBER as be
  • 如果输入被重定向则执行操作

    我想知道如果我的输入被重定向 我应该如何在 C 程序中执行操作 例如 假设我有已编译的程序 prog 并且我将输入 input txt 重定向到它 我这样做 prog lt input txt 我如何在代码中检测到这一点 一般来说 您无法判
  • 模板外部链接?谁能解释一下吗?

    模板名称具有链接 3 5 非成员函数模板可以有内部链接 任何其他模板名称应具有外部链接 从具有内部链接的模板生成的实体与在其他翻译单元中生成的所有实体不同 我知道使用关键字的外部链接 extern C EX extern C templat
  • 在 C# 中为父窗体中的子窗体控件添加事件处理程序

    我有两种形式 一种是带有按钮和文本框的父表单 单击该按钮时 将打开一个对话框 该子窗体又包含一个文本框和一个按钮 现在我想要的是 每当子表单文本框中的文本更改时 父表单文本框中的文本会自动更改 为了获得这个 我所做的是 Form3 f3 n
  • 在 C 中使用枚举而不是 #defines 作为编译时常量是否合理?

    在 C 工作了一段时间后 我将回到 C 开发领域 我已经意识到 在不必要的时候应该避免使用宏 以便让编译器在编译时为您做更多的工作 因此 对于常量值 在 C 中我将使用静态 const 变量或 C 11 枚举类来实现良好的作用域 在 C 中
  • memcpy/memmove 到联合成员,这是否设置“活动”成员?

    重要说明 一些评论者似乎认为我是从工会抄袭的 仔细看memcpy 它从普通旧地址复制uint32 t 它不包含在联合中 另外 我正在复制 通过memcpy 到工会的特定成员 u a16 or u x in a union 不直接到整个联盟本
  • 如何最好地以编程方式将 `__attribute__ ((unused))` 应用于这些自动生成的对象?

    In my makefile我有以下目标 它将文本 HTML 资源 编译 为unsigned char数组使用xxd i http linuxcommand org man pages xxd1 html 我将结果包装在匿名命名空间和标头保
  • 代码中的.net Access Forms身份验证“超时”值

    我正在向我的应用程序添加注销过期警报 并希望从我的代码访问我的 web config 表单身份验证 超时 值 我有什么办法可以做到这一点吗 我认为您可以从 FormsAuthentication 静态类方法中读取它 这比直接读取 web c
  • 如何在 sql azure 上运行 aspnet_regsql? [复制]

    这个问题在这里已经有答案了 可能的重复 将 ASP NET 成员资格数据库迁移到 SQL Azure https stackoverflow com questions 10140774 migrating asp net membersh
  • 在 System.Type 上使用条件断点时出错

    这是函数 public void Init System Type Type this Type Type BuildFieldAttributes BuildDataColumns FieldAttributes 我在第一行设置了一个断点

随机推荐

  • JetBrains Toolbox 应用程序在 Windows 上为空白

    我在 Windows 10 上安装了 JetBrains Toolbox 应用程序 但是当我启动它时 它只显示一个空白边框 如下所示 我尝试重新安装它但仍然不起作用 有人知道如何解决这个问题吗 看起来类似于ALL 1419 https yo
  • 那么如何通过终端打开Android SDK Manager呢? [复制]

    这个问题在这里已经有答案了 我已经将 CD 放入终端中的 android 工具目录中 我尝试输入 android 并按回车键 我也尝试输入 android sdk 并按回车键 但 sdk 管理器不会出现 有什么解决方案或建议可以帮助我了解我
  • HTML5 Canvas 形状从圆形到三角形

    我一直在环顾四周 似乎找不到一种清晰的方法来使形状从圆形变为三角形或矩形或相反 我假设我可以以某种方式存储形状并更改其属性以转换它 基本上我要问的是 如何绘制一个圆形 然后单击按钮将其动画化为三角形 画布形状可以吗 Thanks 您可以使用
  • “启动失败。未找到二进制文件。” Snow Leopard 和 Eclipse C/C++ IDE 问题

    不是问题 我刚刚在互联网上搜索了这个问题的解决方案 并认为我会与 SO 的好人分享 我会用通俗易懂的语言来表述 以便新手也能理解 如果这是错误的地方 我们深表歉意 只是想提供帮助 几乎所有尝试使用 Eclipse C C IDE 的 OS
  • 扩展现有协议以符合另一个协议

    你好 我的目标是扩展 在 swift 3 中 我在框架中拥有的协议 以符合另一个协议 protocol SomeProtocol protocol SomeOtherProtocol extension SomeOtherProtocol
  • R:绘制 igraph 时选择性显示节点

    如何绘制 igraph 节点的选择 我有一个现有的图表 但它太复杂了 我希望能够 放大 节点的子集 我能够删除边缘的子集 但我不知道如何 关闭 孤立的节点 当使用network包 该displayisolates FALSE参数执行此操作
  • Typescript 类可以实现可调用接口吗?

    Typescript 接口允许定义函数风格的调用签名 因此 interface A x number number 这可以通过例如一个函数 const a A function x number number return 1 是否可以使用
  • 如何以编程方式绑定 DataTemplate 内控件的(依赖项)属性?

    The TextBlock居住在一个DataTemplate 因此我无法通过其名称来引用它 那么我该如何绑定它 例如 Text以编程方式属性 XAML
  • Java 组件(JRE、JDK、JVM、JIT 和 javac)之间有什么区别?

    我很难理解两者之间的区别JVM Java虚拟机 JRE Java运行时环境 JDK Java 开发工具包 JIT 即时编译器 以及javac Java 编译器 所有这些之间的良好比较和对比是什么 您可能已经在 google 上搜索了很多次来
  • LINQ to SQL - 一对一关联的问题

    在 L2S 设计器中 我删除了一个表和一个视图 我尝试在两者的主键上添加关联 这应该是一对一的关系 所以我这样设置关联的基数属性 但是 在编码时我无法访问子属性 有什么建议么 Edit I just created a view in sq
  • 如何在 MySQL *Prepared* 存储过程中使用多个参数

    尽管有一些在 MySQL 存储过程中使用多个参数的很好的示例 但我一直无法找到一个简单的示例来说明如何在存储过程中使用它们prepared 下面的代码返回 Incorrect arguments to EXECUTE 使用以下方式调用它时
  • 我如何知道谁调用了 System.gc()?

    在正在运行的系统中 我们会看到很多 Full GC System 这表明有人触发了 System gc 有没有办法找出代码中发生这种情况的位置 我确实搜索了所有可用的源 但没有发现任何可疑的东西 因此它一定在某个地方 可能是在同一容器或容器
  • django隐藏所有表单错误

    有没有办法向用户隐藏所有表单错误消息 我显示自己的消息 而错误消息显示在表单字段之间的事实对我来说没有用 您可以自己渲染模板 并忽略错误 请参阅文档自定义表单模板 https docs djangoproject com en dev to
  • PySpark NoSuchMethodError:将数据插入数据库时​​sun.nio.ch.DirectBuffer.cleaner

    我在尝试将大型数据帧插入 Postgres 时收到此错误 NoSuchMethodError sun nio ch DirectBuffer cleaner 这是一个完整的错误 之前有很多操作 所以没有理由将它们附加到问题中 您能否给一些建
  • Lambda“if”语句?

    我有 2 个对象 我想将它们转换为字典 我使用 toDictionary 一个对象获取密钥的 lambda 表达式是 i gt i name 对于另一个 它是 i gt i inner name 在第二个中 i name 不存在 如果 i
  • 如何使用 mvvm 禁用文本块?

    如何使用 mvvm 禁用文本块 我对我尝试过的这种架构很陌生IsEnabled Binding IsEnable i e XAML
  • 如何仅使用javascript在短时间内更改点击时的按钮文本?

    我正在制作一个购物车网站 我想要我的添加到购物车按钮说添加项目单击它后 但只持续大约 2 秒 然后它会变回添加到购物车 我该如何实现这一目标 在纯 JavaScript 中 您可以使用变量来检查按钮是否被单击 如果没有 则将按钮设置为所需的
  • 在 Power BI/Power Query 中添加缺失的日期行并获取上面行的值

    假设我正在将以下内容导入 PowerBI Date Quantity 1 1 2018 22 1 3 2018 30 1 4 2018 10 其中外部源表是一系列日期 值行 其中缺少一些日期值 我想执行一些 DAX M 将任何缺失的日期行添
  • 如何通过 VBA 从 javascript 计算 vbscript 表达式

    最新的 MS Office 更新禁用了 vbscript 我在 Excel VBA 中使用它来计算表达式 我发现这比过去的 VBA 评估 功能要快得多 因此希望避免这样做 Javascript 仍然可以工作 所以我正在尝试迁移到它 然而 我
  • where 子句中的 LINQ to Nhibernate 用户定义函数

    我正在尝试执行以下操作 var query from a in session Query a where a BasicSearch searchString true select a 但它一直给我这个异常 System NotSupp