Я всегда получаю «System.Collections.Generic.KeyNotFoundException», в котором говорится «Указанный ключ отсутствует в словаре» всякий раз, когда я пытаюсь использовать .Contains и метод ToFuture () в одном запросе.
Представьте, что DBObject содержит набор свойств, одним из которых является целое число "ID"
List<int> test = new List<int>();
test.Add(1557);
test.Add(1558);
test.Add(1559);
IEnumerable<DBObject> test2 = getLinqQuerySomehow<DBObject>().Where(x => test.Contains(x.ID)).ToFuture();
List<DBObject> results = test2.ToList();
Может кто-нибудь воспроизвести это? Кто-нибудь знает о другом способе, кроме функции contains (), чтобы заставить Linq-to-Nhibernate использовать предложение SQL IN для целых чисел в моем списке тестов, а также использовать ToFuture ()?
StackTrace:
в System.Collections.Generic.Dictionary`2.get_Item (ключ TKey)
в NHibernate.Param.NamedParameterSpecification.SetEffectiveType (QueryParameters queryParameters) в d: \ CSharp \ NH \ NH \ nhibernate \ src \ NHibernate \ Param \ NamedParameterSpecification.cs: строка 70
в NHibernate.Param.ParametersBackTrackExtensions.ResetEffectiveExpectedType (IEnumerable`1 параметрSpecs, QueryParameters queryParameters) в d: \ CSharp \ NH \ NH \ nhibernate \ src \ NHibernate \ Param \ ParametersBackTrackExtensions.cs: строка 48
в NHibernate.Hql.Ast.ANTLR. : строка 428
в NHibernate.Loader.Loader.CreateSqlCommand (QueryParameters queryParameters, ISessionImplementor session) в d: \ CSharp \ NH \ NH \ nhibernate \ src \ NHibernate \ Loader \ Loader.cs: строка 1649
в NHibernate.Impl.MultiQueryImpl.AggregateQueriesInformation () в d: \ CSharp \ NH \ NH \ nhibernate \ src \ NHibernate \ Impl \ MultiQueryImpl.cs: строка 641
в NHibernate.Impl.MultiQueryImpl.get_Parameters () в d: \ CSharp \ NH \ NH \ nhibernate \ src \ NHibernate \ Impl \ MultiQueryImpl.cs: строка 774
в NHibernate.Impl.MultiQueryImpl.CreateCombinedQueryParameters () в d: \ CSharp \ NH \ NH \ nhibernate \ src \ NHibernate \ Impl \ MultiQueryImpl.cs: строка 754
в NHibernate.Impl.MultiQueryImpl.List () в d: \ CSharp \ NH \ NH \ nhibernate \ src \ NHibernate \ Impl \ MultiQueryImpl.cs: строка 400
в NHibernate.Impl.FutureQueryBatch.GetResultsFrom (множественный доступ IMultiQuery) в d: \ CSharp \ NH \ NH \ nhibernate \ src \ NHibernate \ Impl \ FutureQueryBatch.cs: строка 24
в NHibernate.Impl.FutureBatch`2.GetResults () в d: \ CSharp \ NH \ NH \ nhibernate \ src \ NHibernate \ Impl \ FutureBatch.cs: строка 73
в NHibernate.Impl.FutureBatch`2.get_Results () в d: \ CSharp \ NH \ NH \ nhibernate \ src \ NHibernate \ Impl \ FutureBatch.cs: строка 29
в NHibernate.Impl.FutureBatch`2.GetCurrentResult [TResult] (Int32 currentIndex) в d: \ CSharp \ NH \ NH \ nhibernate \ src \ NHibernate \ Impl \ FutureBatch.cs: строка 79
в NHibernate.Impl.FutureBatch`2.c__DisplayClass4`1.b__3 () в d: \ CSharp \ NH \ NH \ nhibernate \ src \ NHibernate \ Impl \ FutureBatch.cs: строка 63
в NHibernate.Impl.DelayedEnumerator`1.d__0.MoveNext () в d: \ CSharp \ NH \ NH \ nhibernate \ src \ NHibernate \ Impl \ DelayedEnumerator.cs: строка 26
в System.Collections.Generic.List`1..ctor (коллекция IEnumerable`1)
в System.Linq.Enumerable.ToList [TSource] (источник IEnumerable`1)
в TestProject1.UnitTest1.TestMethod1 () в C: \ checkout \ Библиотечные проекты \ BaseSystemCore \ TestProject1 \ UnitTest1.cs: строка 94