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 построена таким образом.