C# 现有类的Lite版本

C# 现有类的Lite版本,c#,nhibernate,C#,Nhibernate,我有一个类a,包含类B的集合。最后一节课很重,对于我正在学习的一个新模块,我只需要几个字段 为了提高使用nhibernate从SQL server加载实体时的性能,我想创建一个此类的lite版本,用于我正在开发的这个模块(classBLite) 此BLite类将用于集合和多对一关系。我知道我可以为这个新类创建一个单独的映射,其中只包含我需要的字段,但是,如果可能的话,我希望避免这种情况(使用组件或类似功能) 是否可以在不创建额外映射的情况下使用类的“lite”版本?您也可以用于相同的目的。(您需

我有一个类
a
,包含类
B
的集合。最后一节课很重,对于我正在学习的一个新模块,我只需要几个字段

为了提高使用nhibernate从SQL server加载实体时的性能,我想创建一个此类的lite版本,用于我正在开发的这个模块(class
BLite

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

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

您也可以用于相同的目的。(您需要定义lite类,并为AutoMapper指定映射)

使用fluent界面,您可以仅包含/排除特定字段


这是Automapper的替代品,我发现它更易于使用

这里有一个比较


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

在您的场景中有帮助的是
惰性属性映射,文档点9):

lazy(可选-默认为false):指定此属性为 懒惰。初始加载对象时,不会加载惰性属性 已加载,除非已在特定查询中重写获取模式。 当 对象被访问


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

您是否在完成此问题之前意外发布了此问题?它不包含实际问题。也许一些DTO可以帮助您。您不需要映射此对象,您可以创建查询来获取此类型。看看这里:您可以将所有必需的字段(在lite和heavy版本中)移动到lite版本并从中继承:公共类BLite{public string Name{get;set;}}公共类B:BLite{public string OtherProperty{get;set;}}我不确定NHibernate如何处理继承,但这可能会有所帮助。您是想用light类执行插入和更新,还是只执行读取?我的目标是使用nhibernate提高从sql加载实体的性能,虽然没有深入研究,但不确定automapper会有什么帮助。在项目的这一阶段,无法切换到fluent界面。我的目标是使用nhibernate提高从sql加载实体的性能,我没有深入研究,但不确定automapper或ValueInjector会有什么帮助。也许你是对的。我对NHibernate不是很熟悉。然而,我有一些非常繁重的类,我需要使用两个字段中的一个。我使用ValueInjector来填充一个新的lite类(DTO),做一些工作并将字段发回。如果这不是您想要做的,或者如果您无法控制lite类的实例化,那么我想这些都不会有帮助