如何将SelectList与nhibernate Queryover一起使用?

如何将SelectList与nhibernate Queryover一起使用?,nhibernate,queryover,Nhibernate,Queryover,我有这个 TimeTable timeTable = null; List<TimeTable> timeTableEventSettings = session.QueryOver<TimeTable>(() => timeTable) .Where(Restrictions.In(Projections.Property(() => timeTable.Id), timeTableIds))

我有这个

   TimeTable timeTable = null;

        List<TimeTable> timeTableEventSettings = session.QueryOver<TimeTable>(() => timeTable)
            .Where(Restrictions.In(Projections.Property(() => timeTable.Id), timeTableIds))
            .List<TimeTable>().ToList();
时刻表=null;
List timeTableEventSettings=session.QueryOver(()=>timeline)
.Where(Restrictions.In(Projections.Property(()=>timeline.Id),timetableId))
.List().ToList();
现在时间表可以有很多TimeTableEvents。我想把这些退了,但我不知道怎么退

我想这样做,但它不工作

时间表=空

    List<TimeTableEvents> timeTableEventSettings = session.QueryOver<TimeTable>(() => timeTable)
        .Where(Restrictions.In(Projections.Property(() => timeTable.Id), timeTableIds))
            .Select(x => x.TimeTableEvents)
        .List<TimeTableEvents>().ToList();
List timeTableEventSettings=session.QueryOver(()=>timeline)
.Where(Restrictions.In(Projections.Property(()=>timeline.Id),timetableId))
.选择(x=>x.TimeTableEvents)
.List().ToList();
但它似乎不起作用

所以我猜我需要使用SelectList,但我不知道如何使用它

错误

NHibernate.Exceptions.GenericADOException被捕获
Message=无法执行查询
[从[时间表]中选择此时间表ID作为y0,其中此时间表ID位于(@p0)]
位置参数:#0>17
[SQL:从[时间表]中选择此时间表ID作为y0,其中此时间表ID位于(@p0)]
来源=NHibernate
SqlString=从[Timeline]中选择此\u0\u0\u0\u0\u0\u0\u0\u0\u0\u0\u0\u0
堆栈跟踪:
在NHibernate.Loader.Loader.DoList(ISessionImplementor会话,QueryParameters QueryParameters)
在NHibernate.Loader.Loader.ListIgnoreQueryCache(ISessionImplementor会话,QueryParameters QueryParameters)
在NHibernate.Loader.Loader.List(ISessionImplementor会话,QueryParameters QueryParameters,ISet`1 QuerySpace,IType[]结果类型)
在NHibernate.Loader.Criteria.CriteriaLoader.List(ISessionImplementor会话)中
在NHibernate.Impl.SessionImpl.List(CriteriaImpl标准,IList结果)
在NHibernate.Impl.CriteriaImpl.List(IList结果)
在NHibernate.Impl.CriteriaImpl.List[T]()
在NHibernate.criteria.QueryOver`1.List[U]()
在NHibernate.criteria.QueryOver`1.NHibernate.IQueryOver.List[U]()
在第85行的GetExtraEventSettings(学生,列出'1 TimeTableId')
在第314行的GetExtraEventSettings(字符串电子邮件)中
InnerException:System.IndexOutOfRangeException
Message=索引超出了数组的边界。
来源=NHibernate
堆栈跟踪:
位于NHibernate.Loader.CriteriaLoader.getResultColumnRow(对象[]行,IResultTransformer结果Transformer,IDataReader rs,ISessionImplementor会话)
在NHibernate.Loader.Loader.GetRowFromResultSet(IDataReader resultSet、ISessionImplementor会话、QueryParameters QueryParameters、LockMode[]lockModeArray、EntityKey optionalObjectKey、IList HydreatedObject、EntityKey[]键、布尔返回代理)
在NHibernate.Loader.Loader.DoQuery(ISessionImplementor会话、QueryParameters QueryParameters、Boolean returnProxies)
在NHibernate.Loader.Loader.DoQueryAndInitializeNonLazCollections(ISessionImplementor会话、QueryParameters QueryParameters、Boolean returnProxies)
在NHibernate.Loader.Loader.DoList(ISessionImplementor会话,QueryParameters QueryParameters)
内部异常:
公共时间表地图()
{
Id(x=>x.Id);
HasMany(x=>x.ExtraEventSettings);
}
公共事件设置SMAP()
{
Id(x=>x.Id);
引用(x=>x.timeline).Not.Update().Not.Nullable();
}

这怎么不适合你?你的映射是什么样子的?这怎么不适合你?您的映射看起来像什么?
NHibernate.Exceptions.GenericADOException was caught
  Message=could not execute query
[ SELECT this_.TimeTableId as y0_ FROM [TimeTable] this_ WHERE this_.TimeTableId in (@p0) ]
Positional parameters:  #0>17
[SQL: SELECT this_.TimeTableId as y0_ FROM [TimeTable] this_ WHERE this_.TimeTableId in (@p0)]
  Source=NHibernate
  SqlString=SELECT this_.TimeTableId as y0_ FROM [TimeTable] this_ WHERE this_.TimeTableId in (@p0)
  StackTrace:
       at NHibernate.Loader.Loader.DoList(ISessionImplementor session, QueryParameters queryParameters)
       at NHibernate.Loader.Loader.ListIgnoreQueryCache(ISessionImplementor session, QueryParameters queryParameters)
       at NHibernate.Loader.Loader.List(ISessionImplementor session, QueryParameters queryParameters, ISet`1 querySpaces, IType[] resultTypes)
       at NHibernate.Loader.Criteria.CriteriaLoader.List(ISessionImplementor session)
       at NHibernate.Impl.SessionImpl.List(CriteriaImpl criteria, IList results)
       at NHibernate.Impl.CriteriaImpl.List(IList results)
       at NHibernate.Impl.CriteriaImpl.List[T]()
       at NHibernate.Criterion.QueryOver`1.List[U]()
       at NHibernate.Criterion.QueryOver`1.NHibernate.IQueryOver<TRoot>.List[U]()
       at GetExtraEventSettings(Student student, List`1 timeTableIds) in line 85
       at GetExtraEventSettings(String email) in line 314
  InnerException: System.IndexOutOfRangeException
       Message=Index was outside the bounds of the array.
       Source=NHibernate
       StackTrace:
            at NHibernate.Loader.Criteria.CriteriaLoader.GetResultColumnOrRow(Object[] row, IResultTransformer resultTransformer, IDataReader rs, ISessionImplementor session)
            at NHibernate.Loader.Loader.GetRowFromResultSet(IDataReader resultSet, ISessionImplementor session, QueryParameters queryParameters, LockMode[] lockModeArray, EntityKey optionalObjectKey, IList hydratedObjects, EntityKey[] keys, Boolean returnProxies)
            at NHibernate.Loader.Loader.DoQuery(ISessionImplementor session, QueryParameters queryParameters, Boolean returnProxies)
            at NHibernate.Loader.Loader.DoQueryAndInitializeNonLazyCollections(ISessionImplementor session, QueryParameters queryParameters, Boolean returnProxies)
            at NHibernate.Loader.Loader.DoList(ISessionImplementor session, QueryParameters queryParameters)
       InnerException: 


   public TimeTableMap()
        {
            Id(x => x.Id);
            HasMany(x => x.ExtraEventSettings);

        }

public ExtraEventSettingsMap()
    {
        Id(x => x.Id);
        References(x => x.TimeTable).Not.Update().Not.Nullable();
    }