当未使用EXISTS引入子查询时,可以在选择列表中指定NHibernate一个表达式

时间:2015-01-19 09:29:21

标签: c# asp.net asp.net-mvc nhibernate automapper

我正在拥有包含其他类的列表的属性的类。  我想将此类映射到可查询扩展中的另一个类。

AutoMappper.CreateMap<Department1, Department2>()
AutoMapper.CreateMap<Employee1, Employee2>()
var employee1 =_session.Query<Employee1>();
employee1.Project().To<Employee2>(); 

它给出错误'无法执行查询当未使用EXISTS引入子查询时,只能在选择列表中指定一个表达式。 选择employee1_.Id为col_0_0_,employee1_.Name为col_1_0_,(从Department.Department Department1_选择Department1_.Id,Department1_.Name)为[Emplolyee]的col_2_0_。[Employee] Employee1_

同样的解决方案适用于Enumerable案例  mapper.Map(employee1); 以下是课程。

public class Employee1
{
    public int Id {get;set;}
    public string Name {get;set;}
    public List<Department1>{get;set;}
}

public class Department2
{
    public int Id {get;set;}
    public int Name {get;set;}
}

public class Employee2
{
    public int Id {get;set;}
    public string Name {get;set;}
    public List<Department2>{get;set;}
}

public class Department1
{
    public int Id {get;set;}
    public int Name {get;set;}
}

1 个答案:

答案 0 :(得分:0)

您需要使用NHibernate 4,它具有一些投影嵌套集合的能力有限。