我正在尝试使用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中获取列表?