EntityFramework.Extended Future error (внутреннее ограничение компилятора JIT)

Я работаю с Code First EntityFramework (version="6.1.0") и EntityFramework.Extended (version="6.1.0.96, последняя сборка на данный момент отсюда.
DbContext подвергает DbSets которые доступны как:

var set = ctx.Set<MyEntity>();

Сегодня я решил попробовать Future Queries из библиотеки 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-компилятор столкнулся с внутренним ограничением.

Погружение трассировки стека говорит мне это:

в 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 но такая же ошибка произошла.

Любая идея очень поможет.

2 ответа

Решение

Таким образом, чтобы сложить через год; обновил Entity Framework до последней версии 6.1.3, установил последнюю версию EntityFramework.Extended библиотека, и одна вещь, на которую стоит обратить внимание, это то, что я использовал подход "Сначала база данных" для теста, и все прошло нормально. Могли быть другие странные вещи вне моего контроля тогда.

Спасибо всем за поддержку в этом.

Могу ошибаться, но я думаю

ctx.Set<User>() 

возвращает DBSet, тогда как.Future() должен использоваться в конце запросов. Может быть, если вы добавите.AsQueryable в конец ctx.Set()?

ctx.Set<User>().AsQueryable().Future()

Также я думаю, что вы можете просто использовать ctx.users, если ваша база данных EF построена таким образом.

Другие вопросы по тегам