2014-04-24 16 views
16

Pracuję z kodem Pierwszy EntityFramework (version="6.1.0") i EntityFramework.Extended (version = "6.1.0.96, najnowszy build w tej chwili od here.
DbContext naraża DbSets, które są dostępne jak:błąd EntityFramework.Extended Future (JIT kompilator ograniczenie wewnętrzne)

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

Dzisiaj postanowiłem spróbować Future Queries biblioteki EntityFramework.Extended, a zakończył prawie natychmiast, bez pomysłu, jak postępować

0.

Oto przykładowy kod:

using (var ctx = new MyDbContext()) 
{    
    var u = ctx.Set<User>().Future(); 
    var c = ctx.Set<Country>().Future(); 
    var users = u.ToList(); 
} 

Odnośnie dokumentacji Future() powinienem dostać tylko jedno zapytanie do DB, który jest co metoda Future() zapewnia. Zapytanie powinno zostać uruchomione pod numerem u.ToList();, ale to, co się dzieje, to komunikat o błędzie:

Kompilator JIT napotkał wewnętrzne ograniczenie.

ślad stosu nurkowania mówi mi tak:

na EntityFramework.Future.FutureQueryBase 1.GetResult()

w EntityFramework.Future.FutureQuery 1.GetEnumerator()

w System.Collections.Generic.List 1..ctor (kolekcja IEnumerable 1)

w System.Linq.Enumerable.ToList [TSource] (IEnumerable 1 so urce)

na App.Program.Main (String [] args) w C: \ Users \ ... \ App \ Program.cs: linia 25

ja naprawdę nie wiem, co ja "brakuje mi. Sprawdziłem, czy mój ConnectionString ma MultipleResultSets ustawiony na TRUE.
Testowałem to z wcześniejszymi wersjami kompilacji EF.Exteneded, ale wystąpił ten sam błąd.

Każdy pomysł bardzo pomoże.

+1

wydaje się być powiązany z http://stackoverflow.com/a/25007352/979477 – draeron

+0

@draeron sprawdził, że nie, ale bez postępów, zrobię to teraz, może po dokonaniu pewnych aktualizacji postępów ... Dziękuję do opinii. –

+1

@ VedranMandić Jestem pewien, że nie masz już tego problemu, ale: Ten błąd zazwyczaj występuje, gdy JIT kompiluje IL, który jest wadliwy w niektórych (złe typy na stosie itp.). Nie jestem zaznajomiony z EntityFramework.Extended, ale spodziewałbym się, że właśnie to robi. –

Odpowiedz

0

Tak więc dodać po roku później; zaktualizował Entity Framework do najnowszej wersji 6.1.3, zainstalował najnowszą bibliotekę EntityFramework.Extended, a jedną rzeczą do zapamiętania jest to, że użyłem podejścia "Baza danych jako pierwsza" do testu i wszystko poszło dobrze. Mogły to być wtedy inne dziwne rzeczy spod mojej kontroli.

Dziękuję wszystkim za wsparcie w tej sprawie.

0

może być źle, ale myślę

ctx.Set<User>() 

zwraca DBSet natomiast .Future() ma być używany na końcu zapytaniami. Może jeśli dodasz .AsQueryable do końca ctx.Set()?

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

Myślę też, że możesz po prostu użyć ctx.users, jeśli masz zbudowaną w ten sposób bazę danych EF.

+0

Nie daję -1 tego, ale zauważ to: "publiczny interfejs IDbSet : IQueryable , IEnumerable , IQueryable, IEnumerable gdzie TEntity: class ', więc nie ma potrzeby dla AsQueryable (). Również wyczyściłem mój plik .tt z generowania nazwanych zmiennych, takich jak użytkownicy, więc ctx w tym przypadku dawka nie zawiera tego, tj. Wszystkie DbSets (ponieważ to, czym są) mogą być dostępne przez .Set . Dziękuję za trud. –

+0

Jesteś miłosiernym i miłosiernym człowiekiem. –

Powiązane problemy