Carico parziale Entity Framework

Ho le seguenti colonne nella mia tabella

  • Id (int)
  • Nome (nvarchar) in genere <100 caratteri
  • Dati (nvarchar) in media 1 MB

Sto scrivendo un programma che passerà attraverso ogni riga ed eseguirà alcune operazioni nel campo Nome. Poiché utilizzo solo il campo Nome e il campo Dati è molto grande, è ansible indirizzare EF solo per caricare il campo Id e Nome?

Certo

ctx.YourDbSet.Select(p=> new { Id = p.Id, Name = p.Name}); 

questo metodo sta selezionando in una class anonima.

se vuoi salvarlo di nuovo, puoi farlo con qualcosa che io chiamo un’ quadro fittizia:

 foreach(var thing in ctx.YourDbSet.Select(p=> new { Id = p.Id, Name = p.Name})) { var dummy = new YourEntity{Id = thing.Id}; ctx.YourDbSet.Attach(dummy); dummy.Name = thing.Name + "_"; } ctx.SaveChanges(); 

Questo metodo funziona con il tracciamento delle istantanee in quanto EF tiene traccia solo delle modifiche apportate dopo la chiamata di collegamento per inviare nuovamente l’istruzione di aggiornamento. Ciò significa che la tua query conterrà solo un aggiornamento per la proprietà name su quell’ quadro (cioè non toccherà i dati)

NOTA: vuoi assicurarti di farlo in un contesto che controlli strettamente poiché non puoi attaccare un object che è già collegato al grafico di tracciabilità EF. Nel caso precedente la selezione non collegherà le entity framework al grafico come anonime (quindi si è sicuri di utilizzare lo stesso contesto)