NHibernate QueryOver 投影 - 将集合投影到 DTO

2023-12-12

我正在尝试将实体集合投影到 DTO 中。使用简单的属性就足够简单了,但是集合有问题:

public class Blog
{
   public string Name {get;set;}
   public IList<Comments> Comments {get;set;}
   //... more properties
}
public class Comments
{
   public Blog Blog {get;set;}
   //... more properties
}
public class MyDTO
{
   public string BlogName {get;set;}
   public IList<Comments> {get;set;}
}

查询有点像:

var dto = _session.QueryOver<Blog>(() => blogAlias)
                            .JoinAlias(x => x.Comments, () => commentsAlias, JoinType.LeftOuterJoin)
                            .Select(
                                Projections.Property(() => blogAlias.Reference).WithAlias(() => myDTO.Reference),
                                // what project here to project blogAlias.Comments into myDTO.Comments))
                            .TransformUsing(Transformers.AliasToBean<MyDTO>()
                            .SingleOrDefault<MyDTO>();

编辑更新

即使没有转换和获取,我似乎也无法运行简单的投影: “指数数组的边界之外”:

  var dto = _session.QueryOver<Blog>(() => blogAlias)
                                .JoinAlias(x => x.Comments, () => commentsAlias, JoinType.LeftOuterJoin)
                                .Select(
                                    Projections.Property(() => blogAlias.Reference).WithAlias(() => myDTO.Reference),
Projections.Property(() => blogAlias.Comments).WithAlias(() => myDTO.Comments)
                                .List<object>();

我猜这就是你应该做的..

将您的 DTO 更新为:

public class MyDTO
{
   public string BlogName {get;set;}
   public IList<Comments> Comments {get;set;}
}

您修改后的查询:

var dto = _session.QueryOver<Blog>(() => blogAlias)
          .JoinAlias(x => x.Comments, () => commentsAlias, JoinType.LeftOuterJoin)
          .Select(Projections.Property(() => blogAlias.Reference).WithAlias(() => myDTO.Reference),
                  Projections.Property(() => blogAlias.Comments).WithAlias(() => myDTO.Comments),
          .TransformUsing(Transformers.AliasToBean<MyDTO>()
          .SingleOrDefault<MyDTO>()

如果那不起作用那么

_session.QueryOver<Blog>(() => blogAlias)
              .JoinAlias(x => x.Comments, () => commentsAlias, JoinType.LeftOuterJoin)
              .Select(Projections.Property(() => blogAlias.Reference),
                      Projections.Property(() => blogAlias.Comments))
              .SingleOrDefault<object[]>()
              .Select(x=>new MyDTO {BlogName=(string)x[0],Comments=x[1].Select(y=>y.ToString()).ToList())};
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

NHibernate QueryOver 投影 - 将集合投影到 DTO 的相关文章

  • 为什么我的 NHibernate 包集合没有动态设置子项的“父 ID”?

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

    任何人都知道如何将 ICriteria 转换为 DetachedCriteria 我需要使用现有的 ICriteria 作为子查询的一部分 使用 Add Subqueries PropertyIn Name myDetachedCriter
  • Lightspeed 与 NHibernate

    有什么体验光速 http www mindscape co nz products LightSpeed comparison aspx Mindscape 提供的比较并没有过多说明 NHibernate Lightspeed 看起来很灵活
  • Fluent NHibernate 日期时间 UTC

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

    我已经为此摸不着头脑有一段时间了 我不知道出了什么问题 概述 我的 MySQL 数据库中有两个表 两者都正确映射到数据库 我可以加载数据 并且我能够查询一个表 但不能查询另一个表 我研究过的解决方案 表和 C 代码之间的类型转换问题 映射问
  • NHibernate HQL 相当于 T-SQL 的 TOP 关键字

    NHibernate HQL 相当于 T SQL 的 TOP 关键字是什么 另外 用非 HQL 方式说 给我一门课的前 15 个 是什么意思 在 HQL 中这实际上非常简单 var top15 session CreateQuery fro
  • NHibernate:错误的列类型:发现浮点数,预期双精度

    我有一个具有属性的域实体类 public virtual double Result get set 该属性正在使用 NHibernate 3 2 代码映射内容进行映射 public class SampleResultMap ClassM
  • Breeze + NHibernate 多对一关系,避免指定关系键

    以下多对一映射正在运行 取自 NorthBreeze public partial class UserRole public virtual long ID get set public virtual long UserId get s
  • 最好的 NHibernate 二级缓存提供程序是什么?

    我见过有很多这样的 NCache Velocity 等等 但我还没有找到比较它们的表格 考虑以下标准什么是最好的 容易明白 最近正在维护中 是免费的或者有足够好的免费版本 Works 我无法说出什么是最好的或最差的 但我会分享我使用 NCa
  • NHibernate:CreateCriteria 和 Exists 子句

    如何使用 CreateCriteria 编写以下 SQL SELECT FROM FooBar fb WHERE EXISTS SELECT FooBarId FROM Baz b WHERE b FooBarId fb Id 您可以这样做
  • NHibernate:查找脏集合

    我知道怎么做查找脏属性 http nhforge org wikis howtonh finding dirty properties in nhibernate aspx使用NHibernate 但它似乎不适用于集合 即找出是否已在集合中
  • 使用通用存储库模式和流畅的 nHibernate

    我目前正在开发一个中型应用程序 它将访问不同站点上的 2 个或更多 SQL 数据库等 我正在考虑使用类似的东西 http mikehadlow blogspot com 2008 03 using irepository pattern w
  • 如何在 nHibernate 中添加 NOLOCK?

    使用nhibernate时如何添加NOLOCK 条件查询 SetLockMode LockMode None http nhforge org doc nh en index html configuration optional dial
  • 自动映射约定可以与映射覆盖一起使用吗?

    我的 id 有一个约定 它会自动映射名称为Id作为标识符 随着需求的充实 我需要调整域模型 所以很自然地我上网发现我需要创建一个继承自的类IAutoMappingOverride
  • NHibernate.Linq 类似

    如何使用 NHibernate Linq 生成此查询 WHERE this Name LIKE p0 p0 test Notice NO wild card 请注意 这不是 Linq To Sql 或实体框架 这就是 NHibernate
  • NHibernate QueryOver SQLFunction in where 子句

    我想查询一个具有多行的表 每行都有一个timestamp数据每隔十分钟出现一次 我想找到任何丢失数据的开头 即没有timestamp等于接下来的十分钟间隔 如下所示 select a timestamp from table as a wh
  • NHibernate 对单个属性的更新会更新 sql 中的所有属性

    我正在 NHibernate 中对单个属性执行标准更新 然而 在提交事务时 sql 更新似乎设置了我映射到表上的所有字段 即使它们没有更改 这肯定不是 Nhibernate 中的正常行为吧 难道我做错了什么 谢谢 using var ses
  • NHibernate、数据绑定到 DataGridView、延迟加载和会话管理 - 需要建议

    我的主应用程序窗体 WinForms 有一个 DataGridView 它使用 DataBinding 和 Fluent NHibernate 显示 SQLite 数据库中的数据 该表单在应用程序运行的整个过程中都是打开的 出于性能原因 我
  • 使用无状态会话延迟查找字典值

    在我的应用程序中 我设置了一个三元字典映射 以便对于给定用户 我可以检索属于该用户的对象的每个实例的 设置 也就是说 我有类似的东西 public class User public virtual IDictionary
  • Fluent Nhibernate 如何在 SubclassMap 中指定 Id()

    我正在使 Fluent NHibernate 适应我们现有的遗留应用程序 并尝试确定如何将 ClassMap 和 SubclassMap 用于所示的实体层次结构 BaseObject contains database columns co

随机推荐

  • 如何确保链接的默认操作始终处于禁用状态?

    我正在开发一个项目 其中使用大量 ajax 调用来使站点交互更加优雅 我一直在使用的过程是获得脚本的链接 该脚本执行作为链接标记中的 href 存储的适当操作 然后 我使用 jquery 定位该元素并禁用默认操作并执行 ajax 调用 问题
  • Eclipse 中 Scanf 在 printf 之前执行

    我有以下简单的C语言代码 include
  • 在promise then mehod中返回Promise对象时的执行顺序[重复]

    这个问题在这里已经有答案了 代码是 Promise resolve then gt console log 0 return Promise resolve 4 then res gt console log res Promise res
  • 循环组合框 VBA

    我陷入了无法找到正确语法的困境 我正在处理的代码如下所示 Public Function Initializecolors initialize the colors by setting them with the help of the
  • 如何强制将重置推送到远程存储库?

    我们的远程主分支不知何故搞砸了 当前的开发代码与最新的提交一起位于主分支上 显然 开发代码还没有准备好用于主分支 因此 在我的本地存储库中 我重置了最新标签 git reset hard Tag 主分支现在在我的本地存储库上是正确的 现在
  • 以另一种形式访问类的同一实例

    我确信这是一个简单的问题 但我没有足够的经验来知道答案 DataClass Form1 Form2 我有公开课DataClass 在一个单独的文件中 DataClass vb In DataClass我需要访问的数据存储在多个数组中 我有方
  • 在 matplotlib 中绘制大量点和边

    我有一些这种格式的点 大约 3000 和边 大约 6000 points numpy array 1 2 4 5 2 7 3 9 9 2 edges numpy array 0 1 3 4 3 2 2 4 其中边是点的索引 因此每条边的开始
  • 自定义 Bash 提示符正在覆盖自身

    我正在使用自定义 bash 提示符来显示 git 分支 一切都在 etc bash bashrc function formattedGitBranch branch git branch 2 gt dev null sed e s d e
  • 选择每年的最佳记录

    我正在尝试回顾我的 sql 技能 现在我正在尝试在 Northwinddb 上运行一个简单的查询来向我显示每年的顶级客户 但是一旦我使用 TOP 函数 无论我在什么情况下 都只会显示 1 条记录分区依据 这是我的 T SQL 代码 SELE
  • ARM 中的 WFE 指令处理

    WFE 指令如何运作 我读到的是 它使处理器等待 IRQ FIQ event 但是 当您获得 IRQ 时会发生什么 irq fault handler 向量是否在获得中断或执行 WFE 之后的指令时执行 WFE 在概念上等同于 while
  • Firefox 滚动顶部问题

    我对 Firefox 的scrollTop 值和onscroll 事件有疑问 这在 IE Safari 和 Chrome 中效果很好 但 Firefox 似乎滞后 我尝试使用onscroll事件更新一些背景位置 但是当我拿起手柄并快速上下拖
  • ubuntu 16 上的 bash:set -e 不在子 shell 内继承

    当我运行这个命令时 set e echo echo I get himBH作为输出 我期待着这封信e包含在输出中 这是怎么回事 我使用的是 Ubuntu 16 04 1 LTS GNU bash 版本 4 3 46 1 release x8
  • 如何从 AngularJS 指令中选择动态生成的元素?

    在我的指令中 我需要选择某些 DOM 元素 其中一些元素是在 ng repeat 循环中动态生成的 如果我以直接的方式执行此操作 我将只获得静态元素 但是 如果我将选择延迟 500 毫秒 我将获得所有元素 这就是我想要的 虽然这可行 但它不
  • destroy_user_session_path 在 Rails 中触发 GET 而不是 DELETE

    我认为有以下代码 li li 它会生成以下 HTML a href users sign out Sign out a 但是 当单击该链接时 我收到以下错误 No route matches GET users sign out 我在这里做
  • 如何修复 Flask 蓝图的端点错误

    我正在用蓝图学习 Flask 我有以下代码示例 from flask import Flask render template Blueprint g bp Blueprint language name url prefix
  • 自定义 ListView 适配器。 TextChangedListener 调用错误的 EditText

    我有带有自定义适配器的旅行者列表 其中包含两个 EditText edtFirstName 和 edtLastName 我希望当用户输入文本时将更改保存到列表中 并且当单击下一个按钮时将此列表发送到另一个活动 My code public
  • 加密字符串从 Delphi 到 C#

    我正在尝试解密在 Delphi 中使用 Cipher1 3 0 加密的 C 中的一个字符串 来自 Delphi 加密纲要的第一部分 我使用 TCipher Rijndael 我加密的字符串是 this is a test example 密
  • 将字符串中除第一个和最后一个字符之外的所有字符替换为星号[重复]

    这个问题在这里已经有答案了 如何在PHP中将字符串中除了第一个和最后一个字符之外的所有字符替换为星号 例如test应该成为t t and profanity become p y等等 function get starred str len
  • 如何在没有 oledb 的情况下将 Excel 文件数据上传到 SQL Server

    我一直在尝试使用 ASP NET Core MVC 将数据从 Excel 文件导入到 SQL Server 中 但这段代码无法运行 HttpPost public IActionResult Index ICollection
  • NHibernate QueryOver 投影 - 将集合投影到 DTO

    我正在尝试将实体集合投影到 DTO 中 使用简单的属性就足够简单了 但是集合有问题 public class Blog public string Name get set public IList