2012-10-07 49 views
7

Actualicé mi entidad framework 4.3 base de datos primer proyecto al nuevo marco de entidades 5. Aparentemente ahora estoy usando DbContext en lugar de ObjectContext. LoadProperty en Entity Framework 5

He sustituido mi antiguo archivo .edmx por uno nuevo. Mi código de negocio de edad, que anteriormente estaba usando mi archivo 4.3 .edmx, ahora tiene un problema con el código usando el método LoadProperty:

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

Parece que LoadProperty no es un método disponible en DbContext.

¿Cómo puedo obtener un fuerte tipo de carga de todos modos?

supongo que podría utilizar

context.Users.Include("Settings") 

pero eso no es fuerte mecanografiada y propenso a errores tipográficos.

+1

Usted no usaban EF4.3 si usaban ObjectContext - EF4.3 era básicamente todo sobre DbContext ... Si la carga diferida está habilitada, puede usar la propiedad .Settings sin tener que cargarla explícitamente. Tenga en cuenta que puede desencadenar un viaje a una base de datos, por lo que si lo hace con frecuencia, puede ser más barato utilizar .Include() como se indica a continuación. – Pawel

+0

@Pawel: Oh, lo siento. Leí una pregunta sobre otro problema que encontré después de la actualización y la cité con "apprently" para describir mejor mi situación. Golpeé esa frase hasta el final. – citronas

Respuesta

15

También puede usar el método Include con Lambda. no se olvide la instrucción using, porque este Incluir proviene de la clase DbExtension:

using System.Data.Entity; 

...

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

Aquí hay alguna información sobre el método de extensión incluye: msdn info

+0

¡Impresionante! ¡Exactamente lo que estaba buscando! Espero que tu respuesta ayude a otros con el mismo problema – citronas

+0

Extensión épica Debo decir. Es genial, ya que está fuertemente tipado. –

Cuestiones relacionadas