.net - NHibernate 自定义 SQL 对象创建

标签 .net sql nhibernate orm

稍微简化的示例情况:我有实体 A 和 B,它们是非常“重”的域对象。从数据库加载一个是一件大事。然后我有一个实体 C,这是一个非常简单的对象,它有一个标签字符串、一个 A 和一个 B —— 都是惰性的。

我正在做一些低级查询来创建巨大的 C 列表,所以我确切地知道我需要为 C.A 和 C.B 保存哪些 ID,但我不想加载整个对象并将它们设置为属性,因为开销是疯狂的。

相反,我只想将 ID 直接插入到我的 C 实体中,然后仅在需要时才完全加载其上的 A 和 B 属性。

我看到 <sql-insert/>标记在文档中,但该部分确实稀疏。

有什么方法可以在 NHibernate 框架内做我想做的事情,还是我应该只做原始 SQL?如果可能的话,我试图保持数据库的可移植性,这让我回避原始选项。似乎必须有更好的方法我想念。

最佳答案

我不知道 NHibernate 是否允许这样做(在相同的基础数据上分离对象)但通常我会制作“摘要”对象,这些对象可以向上转换为完整的对象(即使在完整的对象上延迟加载) .我通常使用代码生成或手动 ORM 层来执行此操作。

大型集合通常是摘要,然后如果所需的属性或方法未被摘要公开,则将它们向上转换为完整的对象以供调用或传递等。

关于.net - NHibernate 自定义 SQL 对象创建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/216480/

相关文章:

c# - 需要引用类 CTOR 的对象(在构建对象之前)

c# - WCF:客户端调用方法,但不返回

sql - TSQL - 如何格式化查询结果?

nhibernate - 如何在 nHibernate 中创建只读 session ?

c# - 我们如何取消选中单选按钮

c# - 在匿名方法中执行任务时捕获抛出的异常

MySQL错误: You have an error in your SQL syntax check the manual that corresponds to your MySQL server version for the right syntax to use

asp.net - 从池中获取连接之前经过的超时时间

c# - 使用 nhibernate Criteria API 进行急切获取

c# - nHibernate SetFirstResult & SetMaxResults 问题