稍微简化的示例情况:我有实体 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/