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 用户定义函数 的相关文章

  • Automapper、Mapper 未初始化。使用正确的配置调用初始化

    当我尝试将数据提交到数据库时 出现以下错误 Success false Error true ErrorType 2 Message System InvalidOperationException Mapper 未初始化 使用适当的配置调
  • C++ STL 映射,std::pair 作为键

    这就是我通过地图定义的方式 std map
  • 地图类容器的专用功能

    我想要专门为矢量和地图之类的容器设计一个函数模板 对于向量 我可以像下面那样做 但我不知道如何才能有一个专门版本的函数 该函数仅用于像地图这样的容器 include
  • 使用 C 的另一个结构内的灵活长度结构数组

    你好 我正在尝试使用 C 来实现一个简单的结构 2 个盒子 每个盒子包含不同数量的颗粒 main 中传递的粒子的确切数量 我写了以下代码 typedef struct Particle float x float y float vx fl
  • 如何在 ASP.NET MVC 中处理会话数据

    假设我想存储一个名为language id在会议中 我想我也许可以做如下的事情 public class CountryController Controller WebMethod EnableSession true AcceptVer
  • 二叉树和快速排序?

    我有一个家庭作业 内容如下 别生气 担心 我是not请你帮我做作业 编写一个程序 通过使用二分查找的快速排序方法对一组数字进行排序 树 推荐的实现是使用递归算法 这是什么意思 到目前为止 这是我的解释 正如我在下面解释的那样 我认为两者都有
  • 有关shared_ptr的竞态条件示例

    为什么没有竞争条件代码片段 https godbolt org z nEYPYqdqK below include
  • 仅使用一个 #include 表达式一次包含多个头文件?

    是否有任何表达式可以使语法一次包含多个标头 而无需为每个新文件编写 include 表达式 例如 include
  • 将 JavaScript 引擎嵌入到 .NET 中 [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 只是想知道是否有人尝试过将任何 js 引擎嵌入并实际集成到 net 环境中 我可以找到并实际使用 经过L
  • 大小为 k 的非连续子序列的最大值的最小值

    在开始之前 我希望这个问题不是重复的 我发现了几个类似的问题 但它们似乎都没有描述完全相同的问题 但如果它是重复的 我会很高兴看到一个解决方案 即使它与我的算法不同 我一直在尝试回答这个问题 https stackoverflow com
  • Qt 多重继承和信号

    由于 QObject 我在 QT 中遇到了有关多重继承的问题 我知道很多人也有同样的问题 但我不知道该如何解决 class NavigatableItem public QObject Q OBJECT signals void desel
  • 对象变空似乎是 Hangfire 中的反序列化问题

    Hangfire 似乎无法反序列化我的原始版本Scheduler对象及其所有状态 我正在调用其 Execute 方法BackgroundJob Enqueue 如下所示 Scheduler new FileInFileOut FileIn
  • 向客户端发送状态码 500 时页面未呈现

    我有一个页面 通用处理程序 我想在该页面上向客户端返回状态代码 500 以指示出现问题 我这样做 Response StatusCode 500 Response StatusDescription Internal Server Erro
  • 对列表中的一系列整数求和

    假设我有一个这样的列表 List
  • 为什么 C# 中的命名空间允许循环依赖?

    在 c 中 您可以在文件 a cs 其命名空间为 MyApp A 中拥有一条语句 using MyApp B 而文件 b cs 其名称空间为 MyApp B 已经包含该语句 using MyApp A 如果类似的依赖关系存在于不同的 dll
  • ArrayList 有什么问题?

    最近我问了一个关于 SO 的问题 其中提到了可能使用 c ArrayList 来解决问题 有人评论说使用数组列表不好 我想了解更多有关此的信息 我以前从未听说过关于数组列表的这种说法 有人可以带我了解使用数组列表可能出现的性能问题吗 C n
  • asio::this_coro::executor 的实现是什么

    在协程函数中 我们可以添加auto ex co await asio this coro executor 获取该协程的执行者 但当我想了解它的定义时 我发现了这个 Awaitable type that returns the execu
  • C 中的等效 plpgsql 触发器

    我有一个 PostgreSQL 9 0 服务器 并且在某些表上使用继承 因此我必须通过如下触发器模拟外键 CREATE OR REPLACE FUNCTION othertable before update trigger RETURNS
  • 将“C# 友好类型”名称转换为实际类型:“int” => typeof(int)

    我想得到一个System Type给定一个string指定 原始 类型C 友好名称 基本上与 C 编译器读取 C 源代码时的方式相同 我觉得描述我所追求的最好方式是单元测试的形式 我希望存在一种通用技术 可以使以下所有断言通过 而不是尝试对
  • 如何正确处置注入的DLL线程?

    我将一个 DLL 注入到目标进程中 以在玩 MMORPG 时充当助手 当前功能将按键转换为鼠标点击 因为 MMORPG 要求用户移动鼠标才能实现某些功能 这是我所鄙视的 假设我出于某种原因想要取消注入 DLL 我该怎么做呢 这个方法干净吗

随机推荐

  • 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