我有这个
TimeTable timeTable = null;
List<TimeTable> timeTableEventSettings = session.QueryOver<TimeTable>(() => timeTable)
.Where(Restrictions.In(Projections.Property(() => timeTable.Id), timeTableIds))
.List<TimeTable>().ToList();
现在TimeTable可以拥有许多TimeTableEvents。我想回复这些但我不知道如何。
我想这样做,但它不起作用
TimeTable timeTable = null;
List<TimeTableEvents> timeTableEventSettings = session.QueryOver<TimeTable>(() => timeTable)
.Where(Restrictions.In(Projections.Property(() => timeTable.Id), timeTableIds))
.Select(x => x.TimeTableEvents)
.List<TimeTableEvents>().ToList();
但它似乎不起作用。
所以我猜我需要使用SelectList,但我不知道如何使用它。
错误
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();
}