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