此 SelectClauseVisitor 不支持表达式类型“NhSumExpression”

2024-01-03

我有一个可以在 LinqPad 中运行的查询,但不能在 NHibernate LINQ 中运行。我在 NHibernate Jira 上发现了类似的错误NHibernate NH-2865 https://nhibernate.jira.com/browse/NH-2865,但我认为这可能是一个不同的错误,我正在寻找可能的替代方案。

使用默认 LINQ to SQL 在 LinqPad 中运行的查询如下所示:

from ticket in LotteryTickets
  group tiket by ticket.ticketType into g

 select new
 {
     TicketType = g.Key,
     TotalWinningTickets = g.Count(b => b.WinAmount != 0),
     TotalWon = g.Sum(b => b.WinAmount * b.ticketWeight),
     TotalTickets = g.Count(),
 }

还有多种其他方法可以计算总中奖彩票数,例如TotalWinningTickets = g.Sum(t => t.WinAmount > 0 ? 1 : 0) or g.Sum(t => t.WinAmount == 0 ? 0 : 1)

现在,使用 NHibernate LINQ,如果不更改底层数据库表,我就无法使其正常工作。我的替代方法是添加一个名为 HasWon 的表列,并将其设置为 0(表示 false)和 1(表示 true)。这确实有效,但我觉得除了修改数据库表之外还有更好的方法。也许是使用计算字段的子选择。我的 NHibernate LINQ 最终看起来像这样:

from ticket in session.Query<Ticket>()
group ticket by ticket.TicketType into g
select new ReportRow
{
    TicketType = g.Key,
    TotalWinningBets = g.Sum(t => t.HasWon),
    TotalTickets = g.Count(),
    TotalWon = g.Sum(t => t.WinAmount * t.WagerWeight)
};

我实际上正在尝试做的是在 NHibernate 查询中进行多个 Select COUNT,但基于不同的条件。最奇怪的是 NHibernate 转换了我所有的Count(t => t.???)错误地进入COUNT(*)在生成的 SQL 中。

LinqPad 生成的 SQL 工作方式如下: 选择总和( (案件 当 [t1].[WinAmount] > @p3 那么 @p4 其他@p5 结束))AS [值]

希望有更好的方法。


None

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

此 SelectClauseVisitor 不支持表达式类型“NhSumExpression” 的相关文章

  • 如何为 NHibernate 制作内部映射类?

    我为我的映射创建了内部类 并在各处放置了 default lazy false 一段时间后 我决定完全懒惰并删除了此设置 突然之间 几乎所有事情都无法执行 我得到的异常是 无法执行查询 System TypeLoadException 访问
  • 使用 NHibernate 深复制实体

    我目前正在工作中启动一个新的 ASP NET MVC 项目 我们需要生成项目成本估算 我们使用 NHibernate ASP NET MVC 1 0 和 StructureMap 客户希望能够填写有关项目的所有信息 这些信息位于不同的页面中
  • 更新数据库后 NHibernate 查询缓存不起作用

    我在 FluentNHibernate 中启用了二级缓存 Fluently Configure Database MsSqlConfiguration MsSql2005 ConnectionString connectionString
  • NHibernate 反射优化器 - 它有什么作用?

    我发现每当我禁用 nhibernate 反射优化器时 初始化会话工厂的速度就会大大加快 这对于测试目的非常有用
  • 映射同一类中的两个引用,但引用类具有复合键

    我有以下数据库表 为了清楚起见 这些表已缩写 CREATE TABLE dbo prod uom prod id dbo uid NOT NULL Primary key uom type numeric 9 0 NOT NULL Prim
  • Nhibernate ICriteria 和在查询中使用 Lambda 表达式

    你好 我是 NHibernate 的新手 我有点困惑 假设我们有一个product桌子 让product表有 2 列价格1 和价格2 然后我可以通过 HQL 查询映射的产品实体 如下所示 string queryString from pr
  • 使用二级缓存时,nhibernate 查询缓存和实体缓存有什么区别?

    我正在尝试设置 nhibernate 二级缓存我在这篇文章中看到 http www gitshah com 2012 03 nhibernate and caching part 2 html我想了解查询缓存和实体缓存之间的区别 它说你需要
  • 如何在使用 NHibernate 进行任何插入之前增加 ID

    看起来NH只获取一次MAX ID 第一次插入然后在内部存储这个值 这会在其他进程插入数据时给我带来一些问题 然后我没有实际的 ID 并且抛出重复键异常 假设我们有桌子Cats CREATE TABLE Cats ID int Name va
  • 如何让 NHibernate 缓存获取的子集合?

    我有一个相当简单的条件查询来获取子集合 如下所示 var order Session CreateCriteria
  • NHibernate 忽略长度属性

    运行 SQL Profiler 后 我意识到 NHibernate 正在将字符串映射到nvarchar 4000 我通过指定修复了它type AnsiString and length 在 hbm 文件中 现在正在生成varchar 800
  • 如何保持长时间运行的NHibernate Session数据一致?

    我在 ASP NET 会话中缓存了 NHibernate 会话 我遇到过一种情况 用户编辑了一个对象 因此它位于 ISession 的第一级缓存中 然后另一个用户编辑了同一个对象 此时 用户 1 仍然可以看到其编辑的原始版本 而用户 2 可
  • NHibernate Projections - 如何投影集合

    有一个场景 我只需要从实体中选择单个 几列 但在查询中选择多个子项 我一直在尝试投影 但在集合属性上出现错误 这是很正常的情况 但找不到有关投影集合的信息 仅属性 Customer customerAlias null Order orde
  • NHibernate 具有多个数据库和事务

    我们在理解如何最好地使用 NHibernate 时遇到了一些问题 我们通常拥有相对大量 就表数量而言 的 SQL Server 数据库 而不是一个包含大量对象的数据库 我们正在研究处理多个会话工厂的各种选项 并且可能已经控制住了这一点 但是
  • 为什么我的 NHibernate 包集合没有动态设置子项的“父 ID”?

    我有一个新对象 其中包含一些作为 IList 属性的新对象的集合 我通过sql探查器看到正在执行两个插入查询 一个用于父级 它具有新的guid id 另一个用于子级 但是 引用父级的子级上的外键是一个空guid 这是我在父级上的映射
  • Fluent NHibernate 日期时间 UTC

    我想创建一个流畅的 nhibernate 映射来通过以下方式映射 DateTime 字段 保存时 保存 UTC 值 读取时 调整为本地时区值 实现此映射的最佳方法是什么 就我个人而言 我会将日期存储在 UTC 格式的对象中 然后在读 写时在
  • NHibernate - CreateCriteria 与 CreateAlias

    假设以下场景 class Project public Job Job class Job public Name 假设我想使用 Criteria API 搜索其 Job 名称为 sumthing 的所有项目 我可以使用 CreateAli
  • 如何在 NHibernate 中使用 READPAST 提示?

    有什么办法可以让 NHibernate 使用吗the READPAST hint https learn microsoft com en us sql t sql queries hints transact sql table从 SQL
  • NHibernate代理异常

    我是新 NHibernate 我正在编写一个简单的应用程序 其中的客户类包含 id 和名称 并使用 nhibernate 将对象存储到数据库中 但我得到以下信息 未配置 ProxyFactoryFactory 使用可用的 NHibernat
  • NHibernate HQL 相当于 T-SQL 的 TOP 关键字

    NHibernate HQL 相当于 T SQL 的 TOP 关键字是什么 另外 用非 HQL 方式说 给我一门课的前 15 个 是什么意思 在 HQL 中这实际上非常简单 var top15 session CreateQuery fro
  • 在 MVC 应用程序中配置 NHibernate 二级缓存

    我有一个使用 NHibernate 的 MVC3 应用程序 一切都很顺利 直到我开始尝试添加二级缓存 浏览网页几个小时后 我终于找到了我认为正确的 dll NHibernate Caches SysCache2 dll 并将其添加到我的项目

随机推荐

  • 如何检查MySQL中是否存在某行? (即检查 MySQL 中是否存在用户名或电子邮件)

    我需要帮助检查数据库中是否存在行 就我而言 该行包含一个电子邮件地址 我得到结果 email no longer exists email protected cdn cgi l email protection 这是我当前使用的代码 if
  • 如何在 iPhone 的 Objective-C 中本地播放视频?

    我想通过将视频存储在应用程序中来在 iPhone 上本地播放视频 我能怎么做 NSString path NSBundle mainBundle pathForResource myVideo ofType mp4 MPMoviePlaye
  • Cypress - 从 json 响应正文获取值

    我正在使用 Cypress 进行一些 API 测试 但我很难访问 JSON 响应正文中的值 但是我可以对身体进行断言 表明它正确接收了它 下面我尝试分配 JSON 主体 response body 然后从中获取 id 的值 describe
  • Excel 文件的 DictReader

    我有一个当前保存为 csv 的文件 但它最初是一个 Excel 文件 Excel 2010 其内容是这样的 Name Category Address McFood Fast Food Street 1 BurgerEmperor Fast
  • 限制网络请求

    我想执行一堆 WebRequest 但设置了可以同时启动的阈值 我遇到了这个LimitedConcurrencyTaskScheduler 示例 https msdn microsoft com en us library system t
  • WPF 数据网格文本省略号不起作用

    我有一个专栏 里面有很长的用户评论 我使用以下代码加载它
  • TabItem 绑定 WPF

    我刚刚学习 WPF 我需要一些帮助 我有一个使用 TabControl 并动态生成新选项卡的应用程序 在每个选项卡上我有一个 TextBox 现在我想向工具栏添加一个撤消按钮 该工具栏不是选项卡的一部分 类似 VisualStudio 撤消
  • 在 Groovy 中将地图与递归嵌套地图合并

    我想知道是否有人有一种简单的方法将 2 个深层嵌套地图合并在一起 例如 我想得到 a 1 animals cat blue b 2 animals dog red a 1 b 2 animals cat blue dog red 有人有简单
  • 合并重叠的数字范围

    我需要将重叠的数字范围合并为单个范围 所以我有一个包含子列表的列表 例如 83 77 103 97 82 76 101 95 78 72 97 91 72 66 89 83 63 57 78 72 53 47 65 59 41 35 50
  • Cipher 是线程安全的吗?

    很简单 一个实例可以javax crypto Cipher e g Cipher getInstance RSA 可以从多个线程中使用 或者我是否需要将多个线程粘在一个线程中ThreadLocal 就我而言 不 不是 该实例是有状态的 因此
  • 用于二维数组的 ASP.NET MVC 5 编辑器

    我有一个包含二维数组的模型 public class Matrix public ValidInt Data Range 0 8 ErrorMessage public int Width get set Range 0 8 ErrorMe
  • 宏操作符列表

    我知道宏的字符串化运算符 并且我最近了解到 连接运算符 带有字符串文字前缀的预处理器字符串化运算符 https stackoverflow com questions 29850088 preprocessor stringizing op
  • 我可以在垫子扩展行内显示另一个表格吗?

    我有一张带扩展行的垫子桌 如果我单击一行 它会展开并显示硬编码字符串 我想在展开的行内显示另一个表格 是否可以 或者 是否有任何其他技术或方法来实现我想要做的事情 我正在尝试显示给定时间段内已执行作业的列表 在主行上 我只想显示类似 01
  • 在 Spring Boot 中的 application.properties 中使用 Maven 属性

    我正在尝试将 pom xml 中的属性加载到 application properties 中 我想创建两个配置文件 dev 和 prod 以使用不同的数据库 url 我使用 Jenkins 作为 CI 在我的所有应用程序 主要是 Spri
  • 获取直线与多边形相交点的坐标

    我想找到一条线与多边形相交的点 我使用凹轮廓计算获得了这个多边形thread https stackoverflow com questions 57260352 python concave hull polygon of a set o
  • 在 C# 中使用 BitmapData 和指针快速修改位图

    我正在从某些相机捕获数据 原始数据数组 然后我根据调色板将此数据映射到 RGB 值 我需要尽快绘制它 所以我使用BitmapDdata并使用指针编辑不安全代码段中的像素 public void dataAcquired int data B
  • glob 函数中的正则表达式模式

    我在函数中收到了一个文件名 我想从其他目录返回与此文件 按文件名 类似的所有文件 我写了这个 thumbDir this gt files path thumbs toglob thumbDir pathinfo name PATHINFO
  • 用于在 inno 设置安装程序中显示多行内容的控件

    I want to show the content like in below image in installation step of installer i have used memo for showing the conten
  • 高斯过程 scikit-learn - 异常

    我想使用高斯过程来解决回归任务 我的数据如下 每个X向量的长度为37 每个Y向量的长度为8 我正在使用sklearn封装在Python但尝试使用高斯过程会导致Exception from sklearn import gaussian pr
  • 此 SelectClauseVisitor 不支持表达式类型“NhSumExpression”

    我有一个可以在 LinqPad 中运行的查询 但不能在 NHibernate LINQ 中运行 我在 NHibernate Jira 上发现了类似的错误NHibernate NH 2865 https nhibernate jira com