2014-04-24 4 views
16

Sto lavorando con il codice Prima EntityFramework (version="6.1.0") e EntityFramework.Extended (version = "6.1.0.96, l'ultima build al momento da here.
Il DbContext espone il DbSets cui si accede come:errore EntityFramework.Extended Future (compilatore JIT limitazione interna)

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

Oggi ho deciso di provare Future Queries della biblioteca EntityFramework.Extended, e finito più o meno presto, senza un'idea di come procedere

0.

Ecco il codice di esempio:

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

Per quanto riguarda la documentazione Future() dovrei ottenere solo una query al DB, che è ciò che il metodo Future() fornisce. La query deve essere avviata a u.ToList(); ma quello che succede è che ottengo un errore come questo:

Il compilatore JIT ha riscontrato una limitazione interna.

Un tuffo dello stack trace mi dice questo:

a EntityFramework.Future.FutureQueryBase 1.GetResult()

a EntityFramework.Future.FutureQuery 1.GetEnumerator()

a System.Collections.Generic.List 1..ctor (raccolta IEnumerable 1)

a System.Linq.Enumerable.ToList [TSource] (IEnumerable 1 so pubblico Fonte)

a App.Program.Main (String [] args) in c: \ Users \ ... \ App \ Program.cs: linea

io davvero non so che cosa ho 25 mi sto perdendo. Ho controllato che il mio ConnectionString è impostato su TRUE.
L'ho provato con versioni precedenti di EF.Exteneded ma si è verificato lo stesso errore.

Qualsiasi idea sarebbe di grande aiuto.

+1

sembra essere correlato a http://stackoverflow.com/a/25007352/979477 – draeron

+0

@draeron verificato, ma nessun progresso, farò controllare ora, forse dopo alcuni aggiornamenti sono stati fatti progressi ... Grazie per il feedback. –

+1

@ VedranMandić Sono sicuro che non hai più questo problema, ma: Questo errore di solito accade quando JIT sta compilando IL che è difettoso in alcuni era (tipi errati nello stack ecc.). Non ho molta familiarità con EntityFramework.Extended ma mi aspetterei che stia facendo esattamente questo. –

risposta

0

Così da sommare dopo un anno dopo; aggiornato Entity Framework all'ultima versione 6.1.3, installato l'ultima libreria EntityFramework.Extended e una cosa da notare è che ho usato l'approccio 'Database first' per il test e tutto è andato bene. Potevano essere altre strane cose fuori dal mio controllo, allora.

Grazie a tutti per il supporto su questo.

0

Potrebbe essere sbagliato, ma penso

ctx.Set<User>() 

restituisce un DBSet mentre .Future() dovrebbe essere utilizzato al termine della query. Forse se si aggiunge. AsQueryable alla fine di ctx.Set()?

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

Inoltre, penso che sia possibile utilizzare ctx.users solo se il database EF è stato creato in questo modo.

+0

Non darò -1 a questo, ma nota questo: 'interfaccia pubblica IDbSet : IQueryable , IEnumerable , IQueryable, IEnumerable dove TEntity: class', quindi nessuna necessità di AsQueryable (). Inoltre, ho pulito il mio file .tt dalla generazione di variabili denominate come gli utenti, quindi in questo caso il ctx non lo contiene, cioè tutti i DbSet (come quello che sono) sono accessibili tramite. Set . Grazie per lo sforzo. –

+0

Sei un uomo gentile e misericordioso. –