现有类的精简版

时间:2012-12-26 13:31:38

标签: c# nhibernate

我有一个类A,其中包含类B的集合。最后一堂课非常沉重,对于我正在工作的新模块,我只需要几个领域。

为了提高使用nhibernate从SQL服务器加载实体时的性能,我想创建一个这个类的精简版本,以便在我正在开发的这个模块中使用(类BLite)。

BLite类将用于集合和多对一关系。我知道我可以为这个新类创建一个单独的映射,只包含我需要的字段,但如果可能的话,我想避免这种情况(使用组件或类似功能)。

是否可以在不创建额外映射的情况下使用类的“精简版”?

3 个答案:

答案 0 :(得分:3)

在您的方案中可以提供的是lazy属性映射,文档5.1.9. property第9点):

  

lazy(可选 - 默认为false):指定此属性为   懒。最初对象时不会加载惰性属性   加载,除非在特定查询中覆盖了提取模式。   当任何惰性属性时,加载惰性属性的值   访问对象。

这种映射可能适合您,因为这些属性在需要时可用(当对象连接到会话时),但从不隐式加载。在查询中,仍然可以调整获取模式(成为一个SELECT子句的一部分)。

答案 1 :(得分:0)

您可以将AutoMapper用于同一目的。 (您需要定义lite类,并为AutoMapper指定地图)

使用流畅的界面,您可以只包含/排除特定字段。

Example

答案 2 :(得分:0)

这是Automapper的替代方案,我觉得更容易使用http://valueinjecter.codeplex.com/

他们之间有一个比较AutoMapper vs ValueInjecter

在任何情况下,创建重型类的简单或轻型版本的最简单方法可能是使用映射器