2011-02-10 8 views
5

Tengo un servicio web que usa Entity Framework para almacenamiento y expone una API pública para operaciones CRUD.Cómo devuelvo una entidad que es una consulta de varias tablas

Si tengo una entidad como el Usuario que tiene una relación de 1 a muchos con una entidad de Car, ¿cómo puedo devolver fácilmente en mi método de servicio web de GetUser (int userId) una instancia de usuario que se ve así:

public class User{ 
    string Id; 
    IEnumberable<Car> Cars; 
} 

Esto funciona por defecto dentro del marco de entidad, porque supongo que la propiedad Cars es floja cuando se usa en el lado del servidor.

+0

¿La clase 'User' está por encima de algo distinto de su tipo de entidad' User' real? –

Respuesta

2

Los objetos de la entidad son serializables y obtendrá automáticamente la propiedad Cars.

Sin embargo, dependiendo de su consulta LINQ, la propiedad Cars puede haberse cargado o no. Si siempre deseas cargar la propiedad Cars dentro de tu método web dado, entonces debes cargar la propiedad explícitamente. A continuación hay algunas maneras de garantizar que cargue la propiedad de Cars.

1) utilice el método Include ("Cars") en su consulta LINQ.

2) proyección de uso.

3) Cargue explícitamente la propiedad Cars en una instancia de un objeto Usuario. Por ejemplo,

userA.Cars.Load() 
0

He usado LINQ-To-SQL para lograr un resultado similar, y para mí "simplemente funcionó". Lo probaría y vería qué pasa. Es posible que deba definir explícitamente el [DataContract] en los artículos.

2

En primer lugar usted debe [Include] coches en la definición de metadatos de User entidad. También es probable que necesite reescribir el método getUsers() para llenar los automóviles. Algo como esto.

public IQueryable<User> GetUsers() 
{ 
    return this.ObjectContext.User.Include("Cars"); 
} 

No es fácil de explicar en breve, te recomiendo que visite this y this sitios web.

¡Hope helps!

Cuestiones relacionadas