Nhibernate - 在SelectList中选择列表

时间:2017-04-02 11:24:39

标签: c# nhibernate queryover

我正在尝试使用QueryOver的SelectList,以便仅从db中获取我想要的内容,但是当我在select列表中包含一个列表属性时,它会引发异常。

这是我的实体:

public class ActionLog 
{
    public virtual int Id { get; set; }
    public virtual DateTime Date {get;set;}
    public virtual IList<ActionNewValue> NewValues {get;set;}
}

public class ActionNewValue
{
    public virtual int Id {get;set;}
    public ActionLog Action {get;set;}
    public virtual string NewValue {get;set;}
}

当我尝试这个时:

_session.QueryOver<ActionLog>()
.SelectList(lst => lst
    .Select(x => x.Id)
    .Select(x => x.NewValues))
.List<object[]>();

我得到了这个例外

  

索引超出了数组的范围。

我也尝试了以下内容:

ActionLog alias = null;

_session.QueryOver(() => alias)
.SelectList(lst => lst
    .Select(x => x.Id)
    .SelectSubQuery(QueryOver.Of<ActionNewValue>()
        .Where(x => x.Action.Id == alias.Id)))
.List<object[]>();

_session.QueryOver(() => alias)
.Select(Projections.ProjectionList()
    .Add(Projections.SubQuery(
        QueryOver.Of<ActionNewValue>()
        .Where(x => x.Action.Id == alias.Id)))
    .Add(Projections.Property(() => alias.Id)))
.List<object[]>();

但在这两种情况下我都会遇到以下异常:

  

不能在没有投影的条件下使用子查询。

如何知道如何在selectList中获取列表?

0 个答案:

没有答案