Nel sottotitolato cerco di recuperare i dati usando Anonymous Projection
e vorrei non tracciare il entities
che viene recuperato.Il framework Entity `AsNoTracking` non funziona con la proiezione anonima
Nota: ho già passati attraverso domanda stack esistente, ma in grado di trovare una soluzione di lavoro per me
using (var db = new Entities())
{
db.Configuration.LazyLoadingEnabled = false;
db.Configuration.ProxyCreationEnabled = false;
var myprojection = db.Table1
.AsNoTracking()
.Include(gh=>gh.Table2) //Update
.Include(gh=>gh.Table3) //Update
.Select(x => new
{
table1= x,
table2= x.Table2.Where(g => Some Condition),
table3= x.Table3.Where(g=>Some Condition)
})
.ToList();
var result = myprojection.Select(g =>g.table1).FirstOrDefault();
}
Quando uso
AsNoTracking()
dati dalle tabelle interne (table2,3) è persa durante la conversione a questa lineavar result = myprojection.Select(g =>g.table1).FirstOrDefault();
Modifica
Se rimuovo
AsNoTracking()
, tutto funziona correttamente.
1) Come utilizzare projection
e AsNoTracking
in Entity Framework correttamente?
2) Qualsiasi altra opzione per rimuovere il tracciamento di questa query?
Esistono soluzioni alternative?
Perché hai impostato LazyLoadingEnabled e ProxyCreationEnabled su false? –
Ho sia 'WCF' che una connessione diretta al database. Quindi ci sarà una serializzazione circolare se abilita il loadloading – Eldho
Dovrai usare inner inner invece se vuoi filtrare quelle tabelle –