问题标签 [linq-to-nhibernate]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
292 浏览

nhibernate - Linq to NHibernate - 如何返回仅包含某些子对象的父对象

给定一个简化模型,如下所示:

您如何构造一个 Linq to Nhibernate 查询,以便它返回一个发件人列表及其查询满足某些条件的查询。我尝试过这样的事情:

在这种情况下,我收到一个 InvalidCastException,说您不能将类型 Sender 转换为类型 Enquiry。

关于如何在不使用 HQL 的情况下执行此操作的任何指示?

0 投票
3 回答
1477 浏览

.net - 带或不带存储库的 NHibernate

关于这个问题有几个类似的问题,我仍然没有找到足够的理由来决定走哪条路。

真正的问题是,使用存储库模式抽象 NHibernate是否合理?

似乎抽象它背后的唯一原因是让自己可以选择在需要时用不同的 ORM 替换 NHibernate。但是创建存储库和抽象查询似乎又增加了一层,而且大部分工作都是手工完成的。

一种选择是使用暴露IQueryable<T>到业务层并使用 LINQ,但根据我的经验,在 NHibernate 中仍然没有完全实现 LINQ 支持(查询并不总是按预期工作,我讨厌花时间调试框架)。

虽然在我的业务层中引用 NHibernate 会伤到我的眼睛,但它本身应该是对数据访问的抽象,对吧?

您对此有何看法?

0 投票
1 回答
991 浏览

c# - Linq to NHibernate 使用 Queryable.Where 谓词

我正在使用 LINQ to NHibernate 查询 SQLite 数据库。

Person是一个包含 Id 和 Name 的实体:

假设我的 db 表包含一个名为“ John ”的人。

此测试按预期工作:

但是这个失败了:

我错过了什么?

0 投票
1 回答
1255 浏览

c# - 使用 Linq-To-NHibernate 进行多对多查询

好吧,伙计们(和女孩们),这个人整晚都让我发疯,我正在向你们的集体智慧寻求帮助。

我使用 Fluent Nhibernate 和 Linq-To-NHibernate 作为我的数据访问故事,并且我有以下简化的数据库结构:

为简洁起见,我省略了外键,但本质上归结为:

  • 一个类可以有很多节。
  • 一个部分只能属于 1 个班级,但可以有许多学生。
  • 一个学生 (aspnet_Users) 可以属于多个部分。

我已经设置了相应的 Model 类和 Fluent NHibernate Mapping 类,一切正常。

这就是我卡住的地方。我需要编写一个查询,该查询将根据学生的 UserId 和课程日期返回学生注册的部分。

这是我到目前为止所尝试的:

1.

2.

显然,如果没有学生匹配 userId 的学生在开始日期和结束日期之间的当前日期,那么上面的 2 将会失败......但我只是想尝试一下。

Class StartDate 和 EndDate 的过滤器工作正常,但事实证明与 Student 的多对多关系很困难。每次我尝试运行查询时,都会收到带有以下消息的 ArgumentNullException:

值不能为空。参数名称:会话

我考虑过让 SectionStudents 关系成为一个 Model 类,并引用 Section 和 Student 而不是多对多。如果可以的话,我想避免这种情况,而且我什至不确定它是否会那样工作。

提前感谢任何可以提供帮助的人。

瑞安

0 投票
4 回答
301 浏览

fluent-nhibernate - NHibernate 查询逻辑放在哪里?

我正在尝试使用 Fluent NHibernate 和 Linq to NHibernate 设置适当的域架构。我有我的控制器调用我的存储库类,这些类在引擎盖下执行 NHibernate 并传回 ICollections 数据。这似乎运作良好,因为它抽象了数据访问并将 NHibernate 功能保留在“小字”中。

但是,现在我发现我的控制器需要在不同的上下文中使用相同的数据调用。例如,我的仓库返回一个用户列表。当我想显示用户列表时这很好,但是当我想开始使用子类来显示角色等时,我遇到了 SELECT N+1 问题。我知道如何在 NHibernate 中改变它,所以它使用连接,但我的具体问题是我在哪里放置这个逻辑?我不希望每个 GetAllUsers() 调用也返回角色,但我确实希望其中一些。

所以这是我看到的三个选项:

  1. 更改我的映射中的设置,以便将角色加入到我的查询中。
  2. 创建两个存储库调用 - GetAllUsers() 和 GetUsersAndRoles()。
  3. 将我的 IQueryable 对象从存储库返回到控制器并使用 NHibernate Expand 方法。

抱歉,如果我没有很好地解释这一点。我刚开始接触 DDD,很多这个术语对我来说仍然是新的。谢谢!

0 投票
2 回答
218 浏览

linq-to-nhibernate - 新的 NHibernate Core Linq 在哪里?

我正在运行 NHibernate 2.1.2.4000 但我的会话中没有 Query() 方法...

哪个版本的 NHibernate 将 linq 引入了核心?

我仍在使用旧的 Contrib Linq。

我刚刚升级到 Sharp Architecture 的最新稳定版本,这使得从主干升级单个组件(例如 NHibernate)变得困难,因为依赖噩梦。

0 投票
1 回答
957 浏览

performance - NHibernate 标准查询与 LINQ to NHibernate

我了解您无法在 LINQ to NHibernate 中表达您可以使用 NHibernate Criteria 的查询。但是,就性能而言,可以安全地假设使用 NHibernate Criteria 通常比 LINQ to NHibernate 更好吗?

0 投票
2 回答
5111 浏览

c# - NHibernate 连接和投影属性

我有简单的情况(如图像链接文本)和简单的 SQL 查询

如何使用 CriteriaAPI 在 nHibernate 中实现相同的效果?

我有这样的事情:

映射:

我需要 :

  1. 将数据检索到我的网格控件
    - 名,
    - 姓,
    - NIP,
    - 职位描述,
    - 教育。描述,
    - JobType.Description,
    - Country.Description - 来自 Address.Official 为 true 的地址,
    - 街道 - 来自 Address.Official 为 true 的地址,
    - HouseNo - 来自 Address.Official 为 true 的地址,
    - FlatNo - 来自 Address.Official 为 true 的地址。
  1. 将数据检索到另一个网格控件
    - 名,
    - 姓,
    - NIP,
    - 职位描述,
    - 教育。描述,
    - JobType.Description。

和最重要的想法。我想只使用一个 SELECT 语句来做到这一点。现在对于第 1 点,我使用 NamedSQLQuery,一切正常,但对于最简单的情况,我想使用 CriteriaAPI。

同样对于第 1 点和第 2 点,我有 DTO 类,并将查询结果转换为此类。

我可以通过 GetAllEmployees() 来做到这一点,但许多属性是延迟加载的,这样做我在应用程序和数据库之间有大量流量。我可以将这些属性更改为 Eager Loading,但我认为有太多数据需要检索,而我不需要。

0 投票
1 回答
1144 浏览

linq - Linq to NHibernate,按 Rand() 排序?

我正在使用 Linq To Nhibernate,并且使用 HQL 语句我可以执行以下操作:

Andi t 将被随机排序,我会链接到知道如何使用 Linq to Nhibernate 执行相同的语句?

我试试这个:

但它会引发异常并且不起作用......

还有其他方法或解决方案吗?

谢谢

干杯

0 投票
2 回答
2122 浏览

c# - Fluent NHibernate:映射具有不同名称的列

假设我有一张桌子:

ProjectManagerId 和 ContactId 都是来自名为 Person 的表的 id:

如何映射这两列以创建人员对象?(使用自动映射或流利的法线映射)。

谢谢