NHibernate不会将查询结果映射到其类型

时间:2014-01-13 12:37:17

标签: c# nhibernate

我想知道是否可以检索查询的纯结果而不是其映射结果。请记住,我的实体类型只能在运行时知道。

var session = _sessionProvider.GetSession();
return session.QueryOver<object>(type.FullName).List()

此查询将返回映射到其具体类型的列表。但我想检索IEnumerable<object[]>,其中包含例如[0] { Id : 1, RoleId : 1, Name : "Name" }

1 个答案:

答案 0 :(得分:2)

所以你想把某些东西变成某种东西。我希望您至少知道输出中要包含的列名。

您可以通过使用PassThrough结果转换器并使用Projections.Property("<colName>")

定义投影来执行此操作
object alias = null;
var result = session.QueryOver<object>(type.FullName)
    .SelectList(list => list
       .Select(Projections.Id())
       .Select(Projections.Property("RoleId"))
       .Select(Projections.Property("Name")))
    .TransformUsing(Transformers.PassThrough)
    .List<object[]>();

如果你不知道这些属性,你可以查询你的type并反映出什么不是......