EntityFramework.Extended Будущая ошибка (внутреннее ограничение JIT-компилятора)
Я работаю с Code First EntityFramework (version="6.1.0"
) и EntityFramework.Extended(version = "6.1.0.96, последняя сборка на данный момент от здесь.
DbContext
предоставляет DbSets
, к которому обращаются, как:
var set = ctx.Set<MyEntity>();
Сегодня я решил попробовать "Будущие запросы" в библиотеке EntityFramework.Extended, и закончился довольно скоро, без представления о том, как действовать.
Вот пример кода:
using (var ctx = new MyDbContext())
{
var u = ctx.Set<User>().Future();
var c = ctx.Set<Country>().Future();
var users = u.ToList();
}
Что касается документации Future()
, я должен получить только один запрос к БД, который предоставляет метод Future()
. Запрос должен быть запущен в u.ToList();
, но происходит то, что я получаю такую ошибку:
JIT Compiler обнаружил внутреннее ограничение.
Сканирование трассировки стека сообщает мне следующее:
в EntityFramework.Future.FutureQueryBase 1.GetResult()
в EntityFramework.Future.FutureQuery 1.GetEnumerator()
в System.Collections.Generic.List 1..ctor(коллекция IEnumerable 1)
в System.Linq.Enumerable.ToList [TSource] (источник IEnumerable 1)
в App.Program.Main(String [] args) в c:\Users \...\App\Program.cs: строка 25
Я действительно не знаю, чего я упускаю. Я проверил, что мой ConnectionString
имеет MultipleResultSets
установлен на TRUE
.
Я тестировал это с более ранними версиями сборки EF.Exteneded
, но произошла одна и та же ошибка.
Любая идея очень поможет.
Ответы
Ответ 1
Итак, сложить через год; обновил платформу Entity Framework до последней версии 6.1.3, установил последнюю библиотеку EntityFramework.Extended
, и одна вещь, которую следует отметить, это то, что я использовал первый подход "База данных" для теста, и все прошло нормально. Тогда мог бы быть и другой странный материал из моего контроля.
Спасибо всем за поддержку на этом.
Ответ 2
Может быть неправильно, но я думаю,
ctx.Set<User>()
возвращает DBSet, тогда как .Future() предполагается использовать в конце запросов. Может быть, если вы добавите .AsQueryable в конец ctx.Set()?
ctx.Set<User>().AsQueryable().Future()
Также я думаю, вы можете просто использовать ctx.users, если у вас есть база данных EF, построенная таким образом.