问题标签 [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.
nhibernate - Linq to NHibernate - 如何返回仅包含某些子对象的父对象
给定一个简化模型,如下所示:
您如何构造一个 Linq to Nhibernate 查询,以便它返回一个发件人列表及其查询满足某些条件的查询。我尝试过这样的事情:
在这种情况下,我收到一个 InvalidCastException,说您不能将类型 Sender 转换为类型 Enquiry。
关于如何在不使用 HQL 的情况下执行此操作的任何指示?
.net - 带或不带存储库的 NHibernate
关于这个问题有几个类似的问题,我仍然没有找到足够的理由来决定走哪条路。
真正的问题是,使用存储库模式抽象 NHibernate是否合理?
似乎抽象它背后的唯一原因是让自己可以选择在需要时用不同的 ORM 替换 NHibernate。但是创建存储库和抽象查询似乎又增加了一层,而且大部分工作都是手工完成的。
一种选择是使用暴露IQueryable<T>
到业务层并使用 LINQ,但根据我的经验,在 NHibernate 中仍然没有完全实现 LINQ 支持(查询并不总是按预期工作,我讨厌花时间调试框架)。
虽然在我的业务层中引用 NHibernate 会伤到我的眼睛,但它本身应该是对数据访问的抽象,对吧?
您对此有何看法?
c# - Linq to NHibernate 使用 Queryable.Where 谓词
我正在使用 LINQ to NHibernate 查询 SQLite 数据库。
Person
是一个包含 Id 和 Name 的实体:
假设我的 db 表包含一个名为“ John ”的人。
此测试按预期工作:
但是这个失败了:
我错过了什么?
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 而不是多对多。如果可以的话,我想避免这种情况,而且我什至不确定它是否会那样工作。
提前感谢任何可以提供帮助的人。
瑞安
fluent-nhibernate - NHibernate 查询逻辑放在哪里?
我正在尝试使用 Fluent NHibernate 和 Linq to NHibernate 设置适当的域架构。我有我的控制器调用我的存储库类,这些类在引擎盖下执行 NHibernate 并传回 ICollections 数据。这似乎运作良好,因为它抽象了数据访问并将 NHibernate 功能保留在“小字”中。
但是,现在我发现我的控制器需要在不同的上下文中使用相同的数据调用。例如,我的仓库返回一个用户列表。当我想显示用户列表时这很好,但是当我想开始使用子类来显示角色等时,我遇到了 SELECT N+1 问题。我知道如何在 NHibernate 中改变它,所以它使用连接,但我的具体问题是我在哪里放置这个逻辑?我不希望每个 GetAllUsers() 调用也返回角色,但我确实希望其中一些。
所以这是我看到的三个选项:
- 更改我的映射中的设置,以便将角色加入到我的查询中。
- 创建两个存储库调用 - GetAllUsers() 和 GetUsersAndRoles()。
- 将我的 IQueryable 对象从存储库返回到控制器并使用 NHibernate Expand 方法。
抱歉,如果我没有很好地解释这一点。我刚开始接触 DDD,很多这个术语对我来说仍然是新的。谢谢!
linq-to-nhibernate - 新的 NHibernate Core Linq 在哪里?
我正在运行 NHibernate 2.1.2.4000 但我的会话中没有 Query() 方法...
哪个版本的 NHibernate 将 linq 引入了核心?
我仍在使用旧的 Contrib Linq。
我刚刚升级到 Sharp Architecture 的最新稳定版本,这使得从主干升级单个组件(例如 NHibernate)变得困难,因为依赖噩梦。
performance - NHibernate 标准查询与 LINQ to NHibernate
我了解您无法在 LINQ to NHibernate 中表达您可以使用 NHibernate Criteria 的查询。但是,就性能而言,可以安全地假设使用 NHibernate Criteria 通常比 LINQ to NHibernate 更好吗?
c# - NHibernate 连接和投影属性
我有简单的情况(如图像链接文本)和简单的 SQL 查询
如何使用 CriteriaAPI 在 nHibernate 中实现相同的效果?
我有这样的事情:
映射:
我需要 :
- 将数据检索到我的网格控件
- - 名,
- - 姓,
- - NIP,
- - 职位描述,
- - 教育。描述,
- - JobType.Description,
- - Country.Description - 来自 Address.Official 为 true 的地址,
- - 街道 - 来自 Address.Official 为 true 的地址,
- - HouseNo - 来自 Address.Official 为 true 的地址,
- - FlatNo - 来自 Address.Official 为 true 的地址。
- 将数据检索到另一个网格控件
- - 名,
- - 姓,
- - NIP,
- - 职位描述,
- - 教育。描述,
- - JobType.Description。
和最重要的想法。我想只使用一个 SELECT 语句来做到这一点。现在对于第 1 点,我使用 NamedSQLQuery,一切正常,但对于最简单的情况,我想使用 CriteriaAPI。
同样对于第 1 点和第 2 点,我有 DTO 类,并将查询结果转换为此类。
我可以通过 GetAllEmployees() 来做到这一点,但许多属性是延迟加载的,这样做我在应用程序和数据库之间有大量流量。我可以将这些属性更改为 Eager Loading,但我认为有太多数据需要检索,而我不需要。
linq - Linq to NHibernate,按 Rand() 排序?
我正在使用 Linq To Nhibernate,并且使用 HQL 语句我可以执行以下操作:
Andi t 将被随机排序,我会链接到知道如何使用 Linq to Nhibernate 执行相同的语句?
我试试这个:
但它会引发异常并且不起作用......
还有其他方法或解决方案吗?
谢谢
干杯
c# - Fluent NHibernate:映射具有不同名称的列
假设我有一张桌子:
ProjectManagerId 和 ContactId 都是来自名为 Person 的表的 id:
如何映射这两列以创建人员对象?(使用自动映射或流利的法线映射)。
谢谢