我有一个类A
,其中包含类B
的集合。最后一堂课非常沉重,对于我正在工作的新模块,我只需要几个领域。
为了提高使用nhibernate从SQL服务器加载实体时的性能,我想创建一个这个类的精简版本,以便在我正在开发的这个模块中使用(类BLite
)。
此BLite
类将用于集合和多对一关系。我知道我可以为这个新类创建一个单独的映射,只包含我需要的字段,但如果可能的话,我想避免这种情况(使用组件或类似功能)。
是否可以在不创建额外映射的情况下使用类的“精简版”?
答案 0 :(得分:3)
在您的方案中可以提供的是lazy
属性映射,文档5.1.9. property第9点):
lazy(可选 - 默认为false):指定此属性为 懒。最初对象时不会加载惰性属性 加载,除非在特定查询中覆盖了提取模式。 当任何惰性属性时,加载惰性属性的值 访问对象。
这种映射可能适合您,因为这些属性在需要时可用(当对象连接到会话时),但从不隐式加载。在查询中,仍然可以调整获取模式(成为一个SELECT子句的一部分)。
答案 1 :(得分:0)
答案 2 :(得分:0)
这是Automapper的替代方案,我觉得更容易使用http://valueinjecter.codeplex.com/
他们之间有一个比较AutoMapper vs ValueInjecter
在任何情况下,创建重型类的简单或轻型版本的最简单方法可能是使用映射器