2012-10-07 27 views
7

Ho aggiornato il mio progetto di database Entity 4.3 first al nuovo framework di entità 5. Apparentemente sto usando DbContext invece di ObjectContext. LoadProperty in Entity Framework 5

Ho sostituito il mio vecchio file .edmx con uno nuovo. Il mio codice di business vecchio, che è stato precedentemente usando il mio 4.3 edmx di file, ora ha un problema con il codice utilizzando il metodo LoadProperty:

using (var context = new MyEntities()) 
{ 
    Models.User user = context.Users.First(x => x.GUID == guid); 
    context.LoadProperty(user, o => o.Settings); 
    return user; 
} 

Sembra che LoadProperty non è un metodo disponibile in DbContext.

In che modo è possibile ottenere un caricamento con caratteri elevati comunque?

Suppongo che potrei usare

context.Users.Include("Settings") 

ma che non è forte digitato e soggetto a errori di battitura.

+1

È non stavate usando EF4.3 se avete usato ObjectContext - EF4.3 era fondamentalmente tutto su DbContext ... Se il caricamento lazy è abilitato potete semplicemente usare la proprietà .Settings senza caricarla esplicitamente. Si noti che potrebbe far scattare un viaggio in un database, quindi se lo si fa frequentemente potrebbe essere più economico usare .Include() come indicato di seguito. – Pawel

+0

@Pawel: Oh scusa. Ho letto una domanda su un altro problema che ho riscontrato dopo l'aggiornamento e l'ho citato con "apprently" per descrivere meglio la mia situazione. Ho cancellato quella frase. – citronas

risposta

15

È anche possibile utilizzare il metodo Include con Lambda. non dimenticare l'istruzione using, perché questo Includere proviene dalla classe DbExtension:

using System.Data.Entity; 

...

context.Users.Include(u => u.Settings); 

Ecco alcune informazioni sul metodo Include estensione: msdn info

+0

Fantastico! Esattamente quello che stavo cercando! Spero che la tua risposta aiuti gli altri con lo stesso problema – citronas

+0

Epic Extension Devo dire. È fantastico dato che è fortemente digitato. –

Problemi correlati