有些简化的示例情况:我有实体A和B,它们是令人难以置信的“重”域对象。从数据库加载一个是一个非常重要的事情。然后我有一个实体C,它是一个非常简单的对象,有一个标签字符串,一个A和一个B - 都是懒惰的。
我正在做一些低级查询来创建巨大的C列表,所以我确切地知道我需要为CA和CB保存哪些ID,但我不想要加载整个对象并将它们设置为属性,因为开销是疯狂的。
相反,我想直接将ID插入到我的C实体中,然后只在需要时才让它上面的A和B属性完全加载。
我在文档中看到了<sql-insert/>
标记,但该部分确实稀疏。
有没有办法在NHibernate框架内做我想做的事情,或者我应该只做原始SQL?我想尽可能保持数据库的可移植性,这让我回避原始选项。似乎必须有一种我错过的更好的方式。
答案 0 :(得分:1)
我不知道NHibernate是否允许这个(相同基础数据上的单独对象),但通常我会制作“摘要”对象,这些对象可以上转换为完整对象(即使在完整对象上延迟加载) 。我通常使用代码生成或手动ORM层来完成此操作。
大型集合通常是摘要,然后如果摘要不公开所需的属性或方法,它们会被上转换为调用的完整对象,或者被传递等等。
答案 1 :(得分:1)
不好的部分是,如果你必须保存或更新A和B,你必须直接进行。另一个不好的部分是我没时间测试这个,所以我不知道它是否会起作用。