变形金刚,你叫什么名字?我不使用Java有关系吗。公式是SQL2。我假设您已经为不同的表设置了类,那么选项2是很好的选项3。Transformers.AliasToBean()继承了Hibernate的名称,但它是一个NHibernate类,可以将别名映射

变形金刚,你叫什么名字?我不使用Java有关系吗。公式是SQL2。我假设您已经为不同的表设置了类,那么选项2是很好的选项3。Transformers.AliasToBean()继承了Hibernate的名称,但它是一个NHibernate类,可以将别名映射,nhibernate,nhibernate-mapping,one-to-many,many-to-one,Nhibernate,Nhibernate Mapping,One To Many,Many To One,变形金刚,你叫什么名字?我不使用Java有关系吗。公式是SQL2。我假设您已经为不同的表设置了类,那么选项2是很好的选项3。Transformers.AliasToBean()继承了Hibernate的名称,但它是一个NHibernate类,可以将别名映射到属性Automapper很棒。我同意。这也要求除了ProductDTO之外,我还有Product、Language和ProductTranslation类,并且有(最少的)代码来调用AutoMapper来转换模式。我的问题是,在NHibern


变形金刚,你叫什么名字?我不使用Java有关系吗。公式是SQL2。我假设您已经为不同的表设置了类,那么选项2是很好的选项3。Transformers.AliasToBean()继承了Hibernate的名称,但它是一个NHibernate类,可以将别名映射到属性Automapper很棒。我同意。这也要求除了ProductDTO之外,我还有Product、Language和ProductTranslation类,并且有(最少的)代码来调用AutoMapper来转换模式。我的问题是,在NHibernate中有没有办法将3个表之间的关系映射到一个类(实体)中?这是可能的吗?如果您没有已经映射的单个类,automapper确实需要比单个NH映射更多的工作。在这种情况下,您应该尝试Firos answer.AutoMapper中的一个选项。我同意。这也要求除了ProductDTO之外,我还有Product、Language和ProductTranslation类,并且有(最少的)代码来调用AutoMapper来转换模式。我的问题是,在NHibernate中有没有办法将3个表之间的关系映射到一个类(实体)中?这是可能的吗?如果您没有已经映射的单个类,automapper确实需要比单个NH映射更多的工作。在这种情况下,您应该尝试Firos答案中的一个选项。
// FluentNHibernate Mapping
public class ProductTranslationDtoMap : ClassMap<ProductTranslationDto>
{
    public ProductTranslationDtoMap()
    {
        ReadOnly();
        Table(" ProductTranslation");
        Id(x => x.Id, "ProductTranslationId");

        Map(x => x.Language).Formula("(SELECT l.LanguageName FROM Language l WHERE l.LanguageId = LanguageId)");  // simple and highly portable sql formula
        Map(x => x.LocalName);
        Map(x => x.LocalDescription);
        Map(x => x.Price).Formula("(SELECT p.Price FROM Products p WHERE p.ProductId =  ProductId)");
    }
}
Product prod = null;
Language lang = null;
TranslationDto alias = null;
var results = session.QueryOver<ProductTranslation>()
    .JoinAlias(pt => pt.Language, () => lang)
    .JoinAlias(pt => pt.Product, () => prod)
    .SelectList(list => list
        .Select(pt => pt.Id).WithAlias(() => alias.ProductTranslationId)
        .Select(() => lang.Name).WithAlias(() => alias.Language)
        ...)
    .TransformUsing(Transformers.AliasToBean<TranslationDto>())
    .List<TranslationDto>();