Вы можете создать вторичное сопоставление только для чтения, которое извлекает только часть столбцов в Dto (объект передачи данных):
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" namespace="Your.NameSpace" assembly="Your.Assembly">
<class name="OrderDto" table="[Order]" schema-action="none" lazy="false" mutable="false">
<id name="Id">
<generator class="native"/>
</id>
<many-to-one name="CustomerDto" class="CustomerDto"/>
<!-- Other properties-->
</class>
</hibernate-mapping>
Таким образом, вы получаете полный контроль над тем, что извлекается изБД.Однако есть и обратная сторона - убедитесь, что она помечена как mutable = "false", иначе вы можете сохранить ее без полных данных.
И если вы действительно хотите сойти с ума - вы делаете OrderDtoреализовать тот же интерфейс, что и в обычном порядке, а затем при запросе свойства, которое еще не загружено, вы получаете полный заказ.Это добавляет немного сложности, но вы получаете чрезвычайную гибкость, а также возможность использовать Dto вместо реального объекта со всеми преимуществами производительности Dto.(Это также называется шаблоном Proxy, тогда как первый бит иногда называется PresentationModel, так как он предназначен для представления без обычной бизнес-логики.)