问题标签 [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 回答
2116 浏览

c# - 在 NHibernate 中急切地加载子集合和子集合

我遇到了 NHibernate 试图加载一个小的数据层次结构的问题。我的域模型如下所示:

我想为给定的 GrandParent 加载所有父母和孩子。此 Linq-to-NH 查询创建正确的 SQL 并按预期加载 GrandParent:(该示例假设祖父母有 2 个父母,每个父母有 2 个子对象 - 所以总共有 4 个子对象)。

grandparent.Parents 集合包含 4 个项目,其中 2 个是重复项。似乎 DistinctRootEntityResultTransformer 仅适用于 1 级深度的集合,因此 Parent 集合的复制取决于每个父对象有多少子对象。

是否可以让 NH 仅包含不同的 Parent 对象?

非常感谢。

0 投票
1 回答
730 浏览

linq - 有没有人使用 Linq to NHibernate 收到“未处理的表达式类型:1004”?

我有一个传递给 NHibernate 的 linq 查询,Linq2NHibernate 将解析并返回我填充的实体。

麻烦的部分是x => x.Employees.Select(y => y.FirstName).Contains(firstName)

这应该做的是选择员工姓名为 Ryan 的商店。

我在上面的行中收到一条错误消息,指出“未处理的表达式类型:1004

在我看来,这是 Linq2NHibernate 的一个限制,并且.Select().Contains()无法解析。

有任何想法吗?有没有其他人收到这个错误?我可以做些什么来修复它或解决它?

[编辑]

这是我最终使用的。

Linq 查询是x => x.Employees.Any(y => y.FirstName == firstName)

0 投票
2 回答
2486 浏览

nhibernate - NHibernate.Linq 锁定模式

使用 NHibernate.Linq 时是否可以设置 LockMode?使用 ICriteria 时,我可以这样:

是否可以使用 Nhibernate.Linq 构建相同的查询?

0 投票
2 回答
996 浏览

linq - 使用子实体和lazy="false" 进行休眠查询

在选择父集合时,我遇到了为子集合中的每个项目生成单独的 sql 查询的问题。

我有一个带有 IList 子对象集合的父对象。

如果我使用 linq 运行以下代码来休眠: IList parents = _repository.ToList();

我得到如下的 sql 语句:

这显然效率极低,并假设它一定与映射文件有关?

下面是 Child 集合的映射:

相信这是某个地方的新手错误。

任何帮助都非常感谢。

小号

0 投票
2 回答
155 浏览

nhibernate - Linq to Nhiberate - Where 子句

我试图找到答案,但在谷歌中找不到答案。可能没有搜索正确的术语,所以我想在这里问。

以下返回我的所有联系人,而不是与发送的 adjusterType 相同的联系人。

以下确实返回了预期的结果。它只返回符合adjusterType 的联系人。我相信这是我对 LINQ 缺乏了解。

提前致谢。

0 投票
1 回答
1675 浏览

nhibernate - 选择 n+1 问题

Foo 有 Title。
酒吧参考 Foo。我有一个与 Bars 的集合。
我需要一个带有 Foo.Title 的集合。

如果我收集了 10 个酒吧,我将调用 db 10 次。

bar.Select(x=>x.Foo.Title)

目前(使用 NHibernate Linq,我不想放弃它)检索 Bar 集合。

我读了 Ayende对此的评价。
另一个相关的问题
一点文档
以及另一篇相关的博文
也许可以帮助?这个
呢? 也许MultiQuery是我需要的?:/

但我仍然无法在适当的解决方案中“编译”它。

如何避免选择n+1?

0 投票
2 回答
1115 浏览

c# - FluentNHibernate RTM 和 NHibernate.Linq

我已经启动并运行了一个使用 Fluent NHibernate 预发布 v0.0.1.0 以及 NHibernate 2.1.0.4000 和 NHibernate.Linq 1.0.0.0 的系统。

我刚刚放入了新的 Fluent NHibernate RTM dll 并修复了我的代码以进行重大更改,但我遇到了几个问题,具体取决于我尝试实现的方式。

1) 如果我没有将 NHibernate dll 更改为 FluentNHibernate 提供的那个,那么我会收到一条错误消息,抱怨 Fluent NHibernate 以不同版本的 NHibernate 为目标,即使两者具有相同的版本号。

异常消息如下:'Assembly 'FluentNHibernate, Version=1.0.0.593, Culture=neutral, PublicKeyToken=8aa435e3cb308880' uses 'NHibernate, Version=2.1.0.4000, Culture=neutral, PublicKeyToken=aa95f207798dfdb4' 版本高于引用程序集“NHibernate,版本=2.0.1.4000,文化=中性,PublicKeyToken=aa95f207798dfdb4”

2) 如果我将 NHibernate dll 更改为 FluentNHibernate RTM 提供的那个,那么我的程序会在尝试解析使用 NHibernate.Linq 的类中的程序集时中断。它还抱怨在同一程序集的依赖版本之间发现的冲突。

如果 NHibernate.Linq 1.0.0.0 不能与 Fluent NHibernate 一起使用,那很好,我会找到解决方法,但我很感兴趣是否有人找到了一种让他们很好地一起玩的方法,以及为什么显然有两个具有相同版本号的不同版本的 NHibernate。

谢谢,

0 投票
2 回答
1286 浏览

linq - Linq To NHibernate:.StartsWith 在多个属性上

我正在尝试完成以下查询(注意 .StartsWith):

这会抛出:无法解析属性:Firstname.Lastname。

如果我这样做:

一切正常。怎么会这样?

提前致谢!

0 投票
2 回答
4519 浏览

nhibernate - 使用 LINQ to NHibernate 按日期分组

我在 NHibernate 的 LINQ 实现中遇到了一个不受支持的功能的问题(它正在触发QueryException:“无法解析属性:CreatedOn.Date of: Example.Comment”)。

给定下面的实体,我想通过对每天的评论进行分组来提取统计数据并总结每天的评论数量(自然它有额外的属性和正确的映射,用 Fluent NHibernate 编写)

我的 LINQ 查询如下所示(如果针对 LINQ to SQL 上下文执行查询,则可以正常工作)。

正确的解决方案是为项目做出贡献并解决此问题。

另一方面,我很想知道 (LINQ to) NHibernate 是否有一个可扩展点,我可以在其中注入这种行为。我知道我可能会创建一个自定义类型并将第二个属性映射到创建时间的日期部分,但我猜这不会转换为查询,这会使其太慢。

我对重写查询的访问权限有限,因为它们仍然必须使用 LINQ to SQL,所以我不能使用 HQL。

0 投票
1 回答
872 浏览

nhibernate - 如何处理 NHibernate LINQ 空结果集?

我想检索登录用户的角色列表。

以下是从数据库中读取用户角色的代码段。

AppUser:用户实体角色:角色实体。由于数据库中没有用户 id 1 的数据,因此它不会返回任何内容。

返回类型数据是 NHibernate.Linq.Query 并且它不为空。

当我尝试将其转换为 ToList() 时,它会引发以下错误;

“索引超出范围。必须为非负数且小于集合的大小。参数名称:索引”

如何处理空结果集?