问题标签 [queryover]

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 回答
3307 浏览

nhibernate - NHibernate 3.0 QueryOver 相当于 Nhibernate Linq 中的 FetchMany

Nhibernate 3 中的 linq 提供程序使我能够使用 FetchMany、ThenFetchMany 等为集合指定多个级别的急切获取。是否有使用 QueryOver 的等效方法来执行此操作。

说我有一个结构

我可以急切地在 NH Linq 中加载整棵树

有没有办法使用 QueryOver api 做到这一点?

0 投票
1 回答
1749 浏览

nhibernate - 如何在休眠查询中执行此操作

我需要在 nhibernate QueryOver 中执行此操作:

到目前为止,我已经这样做了:

但这会选择所有(Select ),我只想要 Command 对象(select sc.)。如果我尝试像这样向查询添加投影:

它抛出这个异常:

来自 x Source=NHibernate
StackTrace: 在 NHibernate.Impl.ExpressionProcessor.FindMemberExpression(Expression expression) in d:\CSharp\NH\nhibernate\src\NHibernate\Impl\ExpressionProcessor.cs: NHibernate.Criterion.QueryOver 的第 189 行2.Select(Expression1[] 投影)在 d:\CSharp\NH\nhibernate\src\NHibernate\Criterion\QueryOver.cs:C:\Projects\EGrad 中 Novatec.Persistence.Repositories.Implementations.UserRepository.GetAllowedUserCommands(Int32 userId) 的第 363 行\Main\Source\Novatec.E-Grad\Source\Novatec.Persistence\Repositories\Implementations\UserRepository.cs:C:\ 中 Novatec.Administracija.Services.Security.SecurityManager.AuthorizeUserAction(Int32 userId, String commandId) 的第 140 行Projects\EGrad\Main\Source\Novatec.E-Grad\Source\Novatec.Administracija.Services\Security\SecurityManager.cs:Novatec.Framework.Infrastructure.Services.ServiceBase.ExecuteCommand 的第 48 行(Int32 userId,String appId,ICommand命令)在 C:\Projects\EGrad\Main\Source\Novatec.E-Grad\Source\Novatec.Framework.Infrastructure\Services\ServiceBase.cs:第 94 行内部异常:

0 投票
1 回答
2230 浏览

nhibernate - 如何使用 NHibernate QueryOver 重新创建这个复杂的 SQL 查询?

想象一下以下(简化的)数据库布局: 数据库布局

我们有许多“假期”记录,这些记录与在特定日期前往特定住宿等有关。

在给定一组搜索条件(例如持续时间、出发机场等)的情况下,我想从数据库中提取每个住宿的“最佳”假期(即最低价格)。

会有多条价格相同的记录,所以我们需要先按优惠保存(降序)选择,再按出发日期升序选择。

我可以编写 SQL 来做到这一点,看起来像这样(我并不是说这一定是最佳方式):

如您所见,这在另一个子查询中使用了一个子查询。

然而,出于几个原因,我更愿意在 NHibernate 中实现同样的结果。

理想情况下,这将通过 QueryOver 完成——原因是我动态地建立了搜索条件,而使用 QueryOver 的流畅界面更容易做到这一点。(我开始希望使用 NHibernate Linq,但不幸的是它还不够成熟)。

经过大量努力(作为 NHibernate 的相对新手),我能够重新创建获取所有住宿及其最低价格的内部查询。

所以我的问题是...

关于如何使用 QueryOver 或必要时 Criteria API 来实现我想要的任何想法?

我宁愿不使用 HQL,但如果有必要的话,我也愿意看看如何用它来完成(尽管它使建立搜索条件变得更加困难(或更混乱))。

如果这只是使用 NHibernate 不可行,那么我可以使用 SQL 查询。在这种情况下,我的问题是可以改进/优化 SQL 吗?

0 投票
1 回答
7615 浏览

c# - QueryOver 和 WhereExists 的帮助

我有个问题。我有人和猫。每个 Person 都有一些 Cats(Cats 中有一个外键指向 Persons 中的主键)。每只猫都有一个年龄。我想选择有“老”猫的人。我想要这些人的所有猫,而不仅仅是“老”猫。我需要使用 QueryOver 语法来完成。

在 T-SQL 中它会是这样的:

我知道我必须使用子查询,并且我可以轻松地使用“旧”的 nhibernate 语法(Criteria/DetachedCriteria),但我不能在 QueryOver 语法中做到这一点。

我不想要“IN”条件。我的主键是一个复杂的键,所以我不能用 IN 来做。

0 投票
1 回答
3546 浏览

sql - NHibernate QueryOver:加入限制的析取

我想合并两个限制,一个与父母有关,一个与孩子有关。

我有以下代码:

SQL 输出:

不幸的是,这两个限制之间存在 AND 结合:

我想要 OR 代替,像这样:

如何使用新的 QueryOver API 解决此查询?

0 投票
1 回答
3789 浏览

nhibernate - 使用 QueryOver 删除?

在 NHibernate (V3) 中删除一组对象时,我想改进我的代码。目前,我对检索到的集合进行迭代,并对每个对象调用 delete。这会生成 n+1 个 SQL 语句。

我注意到 NHibernate Session 提供了这个方法:Delete(string query)

通过使用这种方法,我想我可以用一条 SQL 语句来做同样的事情。

你知道是否有办法将此方法与 QueryOver API 结合起来避免 HSQL ?

0 投票
3 回答
11037 浏览

nhibernate - NHibernate 延迟加载带有期货的嵌套集合以避免 N+1 问题

我有一个看起来像这样的对象模型(伪代码):

当我加载给定产品并想要显示其推荐的图像时,我遇到了 N+1 问题。(推荐是延迟加载的,然后循环调用每个推荐的 .Images 属性。)

我想做的是急切地加载图表的这个特定部分,但我不知道该怎么做。我可以急切地加载推荐,但不能加载它们的图像。这是我一直在尝试的,但它似乎不起作用:

使用 QueryOver,最好的方法是什么?我不想一直急切地加载图像,只是在这种特殊情况下。


编辑:我改变了我的方法,虽然这并不完全是我的想法,但它确实避免了 N+1 问题。我现在使用两个查询,一个查询产品,一个查询推荐图片。产品查询很简单;这是图像查询:

0 投票
5 回答
10902 浏览

c# - Nhibernate + QueryOver:过滤 Where 忽略敏感

我正在尝试使用 QueryOver 在 nHibernate 中构建一个简单的查询,但我希望它将所有内容转换为小写或忽略敏感:

我怎样才能做到这一点?

更新

有人建议问题可能出在数据库的收集上,但我从来没有遇到过任何问题,这个脚本有效:

0 投票
3 回答
4416 浏览

c# - 在 nhibernate queryover 查询中指定获取策略(选择、连接等)

我正在尝试使用QueryOver创建一个查询,它将使用SelectSubSelect模式获取一个集合。有问题的实体是Track。我想加载一个名为 的集合TrackPrices,我在查询中这样做:

但是,这会创建一个左连接,从而导致分页问题。我希望它执行单独的selectsubselect。知道是否可以做到吗?据我所知,使用标准 API 可以:

但我想避免在代码中使用魔法字符串,因此我更喜欢使用 QueryOver API 来完成它。

0 投票
1 回答
920 浏览

c# - 有没有办法让 Nhibernate 3 使用 Visual Studio 2008 与 Sharp Architecture 一起工作?

我一直在尝试寻找与 Visual Studio 2008 一起使用并使用 NHibernate 3 的 Sharp Architecture 版本,但没有成功。我想使用 NHibernate 版本 3 中的 QueryOver API。我能找到的最新版本是 sharp-architecture-1.6.0.0-templify-package.zip,它与 Visual Studio 2008、MVC 2 和 NHibernate 2 兼容。所有的Sharp Architecture 的较新版本仅与 Visual Studio 2010 兼容。我尝试制作 Sharp Architecture 的自定义构建:

我更改了“SharpArchitecture 1.6 Full Source”项目中的引用...:

  • NHibernate.Validator 到版本 1.3.0.4000
  • NHibernate 到版本 3.1.0.4000
  • NHibernate.ByteCode.Castle 到版本 3.1.0.4000
  • FluentNHibernate 到版本 1.2.0.694
  • Castle.Core 到版本=2.5.2.0

...通过用项目 bin 目录中的新 dll 替换旧 dll。然后我运行 ClickToBuild.bat(位于下载的 Sharp Architecture zip 文件基目录中)来构建解决方案。构建成功,所有测试都通过了。然后我用我刚刚构建的新 Sharp Architecture 替换了我自己项目中的所有 dll。我的项目可以编译,但是当我运行它时,SharpArch.Data\NHibernate\NHibernateSession.cs 会抛出以下异常:

无法加载文件或程序集“Castle.Core,Version=2.5.1.0,Culture=neutral,PublicKeyToken=407dd0808d44fbdc”或其依赖项之一。找到的程序集的清单定义与程序集引用不匹配。(来自 HRESULT 的异常:0x80131040)

我尝试在 web.config 中为 Castle.Core 使用 bindingRedirect:

但这仍然行不通。

我在正确的轨道上吗?我还能做些什么来让它工作?