在投影中重用组件(NHibernate)

在投影中重用组件(NHibernate),nhibernate,components,dto,projection,Nhibernate,Components,Dto,Projection,是否可以在投影中重用组件映射 以下是供应商实体的映射: <class name="Vendor" table="vendor"> ... <property name="Name" column="Name" /> <component name="Address" class="MyProject.Address, MyAssembly" > <property name="Street" column

是否可以在投影中重用组件映射

以下是供应商实体的映射:

   <class name="Vendor" table="vendor">
     ...
     <property name="Name" column="Name" />
     <component name="Address" class="MyProject.Address, MyAssembly" >
       <property name="Street" column="street" />
       <property name="City" column="City" />
     </component>
   </class>
在不将地址拆分到自己的表中的情况下,这是可能的吗


谢谢

我认为这应该“起作用”:

Session.QueryOver<Vendor>()
    .SelectList(builder =>
        builder.Select(x => x.Name)
            .Select(x => x.Address))
    .TransformUsing(Transformers.AliasToBean<VendorDTO>())
    .List<VendorDTO>();
Session.QueryOver()
.SelectList(生成器=>
builder.Select(x=>x.Name)
.选择(x=>x.Address))
.TransformUsing(Transformers.AliasToBean())
.List();

是否需要查询?“在投影中重用组件映射”是什么意思?我不明白这个问题…可能的提示-你可以编写自己的结果转换器;您可以尝试使用HQL构造新地址();我没有试过这两种方法,所以只是提示。是的,我希望得到一个类似于以下内容的查询:从供应商处选择new VendorTo(vendor.Name,vendor.Address),谢谢您的提示。选择new VendorTo(vendor.Name,vendor.Address)不起作用?我认为您应该能够使用别名BeanResultTransformer实现这一点
Session.QueryOver<Vendor>()
    .SelectList(builder =>
        builder.Select(x => x.Name)
            .Select(x => x.Address))
    .TransformUsing(Transformers.AliasToBean<VendorDTO>())
    .List<VendorDTO>();