如何设置 NHibernate LINQ 语句的超时

2024-04-08

我正在使用 Fluent NHibernate 作为我的 ORM。为此,我尝试使用 NHibernate LINQ 语法通过 LINQ 的强大功能来获取一组数据。我的代码可以正常工作并执行,但如果运行时间超过大约 30 秒,则会引发超时。我的问题是如何通过 NHibernate 延长 LINQ 语句的默认 30 秒超时?

我已经看过帖子了here https://stackoverflow.com/questions/12406717/linq-timeout-timeout-expired, here https://stackoverflow.com/questions/11821236/sql-timeout-expired, and here https://stackoverflow.com/questions/2519754/setting-linq-to-nhibernate-ado-command-timeout但是前两个是指设置 DataContext 的 Timeout 属性,这在这里不适用,第三个是指在 XML 中设置超时,这也不适用,因为我正在使用 Fluent NHibernate 动态生成 XML。不仅如此,该帖子已有 2 年历史,Fluent NHibernate 自此发生了变化。

使用 ICriteria 对象甚至 HQL,我可以指定超时,但这不是这里的目标。我想知道如何设置相同的超时并使用 LINQ。

示例代码:

    using (var session = SessionFactory.OpenSession())
    using (var transaction = session.BeginTransaction())
    {
        var query = (from mem in session.Query<Member>()
                     select mem);
        query = query.Where({where statement});
        int start = (currentPage - 1) * max);
        if (start > 0)
            query = query.Skip(start).Take(max);
        else
            query = query.Take(max);

        var list = query.ToList();
        transaction.Commit();
        return list;
    }

此代码(其中语句无关紧要)适用于除发生超时之外的所有用途。

任何帮助表示赞赏。提前致谢!


我最终为 Fluent NHibernate 配置设置了命令超时。这样做的缺点是它为我的所有数据访问调用设置了超时,而不仅仅是一个。

示例代码:

.ExposeConfiguration(c => c.SetProperty("command_timeout", (TimeSpan.FromMinutes(10).TotalSeconds).ToString()))

我发现这个建议来自this https://groups.google.com/forum/?fromgroups=#!topic/fluent-nhibernate/gi5O00uFYzE网站。

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

如何设置 NHibernate LINQ 语句的超时 的相关文章

随机推荐

  • 从变量表复制数据

    我一直在尝试做一份报告并创建一个宏来将数据从一个文件复制到另一个文件 我不知道如何复制数据 因为我需要从中获取数据的表各不相同 示例一 我需要复制的是警报文本下方的内容 但在示例一中 我没有严重警报 但有些文件可能有 这同样适用于主要 次要
  • HitBTC api POST 请求,C#

    我知道如何执行 GET 请求 但 POST 不起作用 public string Order var client new RestClient http api hitbtc com var request new RestRequest
  • 在 RecyclerView.ViewHolder 中添加片段

    我有一个 RecyclerView ViewHolder 它将根据传递的对象的实例将不同的片段添加到其 FrameLayout 中 问题在于几乎不可能将片段添加到 ViewHolder 中 请注意 我已经从父级传递了 FragmentMan
  • LR(k) 到 LR(1) 语法转换

    我对以下内容感到困惑quote http en wikipedia org wiki LR parser Theory来自维基百科 换句话说 如果一种语言足够合理 允许 高效的单遍解析器 可以用 LR k 语法来描述 语法总是可以机械地转化
  • Mac OS:安装 vue cli 可以正常工作

    我安装了vue cli运行以下命令 npm install g vue cli Users me npm bin vue gt Users me npm lib node modules vue cli bin vue js Users m
  • 使用 AngularJS 和 Django REST 框架进行 Facebook 身份验证

    我正在开发一个 SPA 应用程序AngularJS http angularjs org 它使用Django https www djangoproject com 服务器的后端 我从 SPA 与服务器通信的方式是django rest f
  • 使用模板复制时如何在 XSLT 中创建元素

    我正在尝试在 XML 中创建一个元素 其中复制和修改了基本内容 我的 XML 是这样的
  • 从 PHP 连接到 SQL Server 时出现“Adaptive Server 不可用或不存在”错误

    我正在尝试使用 unixODBC 和 FreeTDS 从我的 Mac 连接到 SQL Server 2005 DB 正如我所概述的here http smgaweb com blog connecting remote ms sql ser
  • 添加引用对话框中缺少 GAC 程序集

    我有一个 Interop 程序集位于 GAC 中 Windows 资源管理器清楚地显示它列在C WINDOWS assembly文件夹 然而 当我尝试从 Visual Studio 添加对它的引用时 我在 添加引用 对话框中的任何位置都看不
  • 关于Scrum的两个问题[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我有两个关于 Scrum 的相关问题 我们公司正在努力实施它 并且我们确信我们正在跨越障碍 这两个问题都是关于 完成意味着完成 1 对于正
  • 未捕获的引用错误:$ 未定义(匿名函数)$(function() 不起作用

  • Laravel - 更新日期的验证规则

    我有这个验证规则 event start gt required date after today 创建模型时一切都很好 这个日期不能早于今天 但是当用户尝试更新事件开始日期在今天之前并且弹出验证错误时 有没有办法调整此以更新模型 那么当用
  • 根据环境不同有不同的.eb扩展名

    我有 2 个独立的环境来管理我的应用程序 一个主要环境 带有负载均衡器的网络服务器 以及一个辅助环境 一个用于运行 crons 的小型层工作人员 我的 ebextensions 包含很多实例和负载均衡器配置 例如 01亚马逊 config
  • Flyway条件数据库迁移

    我正在尝试使用 Flyway 但我有一个不知道如何解决的场景 当我应用标准脚本时 我必须运行 V1 0 create table TAB1 sql 当我将脚本应用于 customer1 时 TAB1 表是一个视图 因此我必须运行 V1 0
  • 扩展 macOS Sierra 上的堆栈大小

    当我尝试使用命令扩展 macOS Sierra 上的堆栈大小时ulimit s unlimited终端打印下一条消息 bash ulimit 堆栈大小 无法修改限制 不允许操作 我也尝试使用sudo ulimit s unlimited但它
  • 如何从 Java 生成 ssh 兼容的 id_rsa(.pub)

    我正在寻找一种在 Java 中以编程方式创建 ssh 兼容的 id rsa 和 id rsa pub 文件的方法 我已经创建了密钥对 KeyPairGenerator generator generator KeyPairGenerator
  • 如何使用 Runtime.getRuntime().exec("cmd")

    在我的应用程序中 我尝试执行 SD 卡上存在的本机代码 File sdCard getExternalFilesDir null directory where native file is placed String nativeFile
  • 从 MySqlCommand 获取生成的 SQL 语句

    我正在使用 MySqlCommand 绑定参数 以便正确转义和清理数据 但我不会直接在生成它的计算机上执行命令 我需要将它作为原始 SQL 发送到另一台执行它的机器 现在 我正在手动循环参数并替换 CommandText 但这不会产生任何敏
  • symfony3 嵌入式控制器与表单

    我有一个嵌入式控制器 如 Symfony 网站上所述 http symfony com doc current templated embedding controllers html http symfony com doc curren
  • 如何设置 NHibernate LINQ 语句的超时

    我正在使用 Fluent NHibernate 作为我的 ORM 为此 我尝试使用 NHibernate LINQ 语法通过 LINQ 的强大功能来获取一组数据 我的代码可以正常工作并执行 但如果运行时间超过大约 30 秒 则会引发超时 我