2010-03-13 22 views
5

Tengo entidades Entity Framework Eventos que tienen una EntityCollection de RSVP. Quiero convertir la EntityCollection de RSVP en una lista genérica <> de una clase POCO RSVP.Cómo convertir una EntityCollection <T> en la Lista <POCOObj>

Así que quiero EntityCollection -> List.

¿Cuál sería la mejor manera de conseguirlo?

hasta ahora tengo esto (le falta la parte de RSVP)

var events = from e in _entities.Event.Include("RSVP") 
        select new BizObjects.Event 
        { 
         EventId = e.EventId, 
         Name = e.Name, 
         Location = e.Location, 
         Organizer = e.Organizer, 
         StartDate = e.StartDate, 
         EndDate = e.EndDate, 
         Description = e.Description, 
         CreatedBy = e.CreatedBy, 
         CreatedOn = e.CreatedOn, 
         ModifiedBy = e.ModifiedBy, 
         ModifiedOn = e.ModifiedOn, 
         RSVPs = ??? 
        }; 

Gracias.

+0

Pedido esto [Proyecciones e incluye] (http://www.thejoyofcode.com/Projection_blows_includes_in_Entity_Framework. aspx) publicación en el blog. – kervin

Respuesta

1

Le sugiero que ponga el código "select" en método de extensión denominado algo así como "ToPoco (este evento Evento)" (lo usará para la conversión de "Evento").

También debe implementar otro método de extensión para la conversión múltiple de "Eventos" como la extensión List<BizObjects.Event> ToPoco(this List<Event> events), que solo llame al BizObjects.Event Poco(this Event event) en un bucle.

Después de que su consulta se verá así:

var events = (from e in _entities.Event.Include("RSVP")).ToList().ToPoco(); 

Acerca de confirmaciones de asistencia:

Sólo normalmente crea otro método de extensión para la conversión de RSVP como

List<BizObjects.RSVP> ToPoco(this List<RSVP> RSVPs)

Entonces puede llamar al RSVPs = e.RSVPs.ToList().ToPoco()


Solución para encajar directamente a usted código podría ser también algo así:

RSVPs = e.RSVPs.Select(rsvp => new RSVP { //do mapping }) 
+0

Intenté su última solución, pero tuve que agregar .ToList a. Seleccionar. Sin embargo, recibí un error EntityFramework que indicaba que no podía convertir ToList(). Voy a publicar el error más tarde cuando tenga la oportunidad. Me ha señalado en la dirección correcta. ¡Gracias! –

0
var events = from e in _entities.Event.Include("RSVP") 
       select new BizObjects.Event 
       { 
        EventId = e.EventId, 
        Name = e.Name, 
        Location = e.Location, 
        Organizer = e.Organizer, 
        StartDate = e.StartDate, 
        EndDate = e.EndDate, 
        Description = e.Description, 
        CreatedBy = e.CreatedBy, 
        CreatedOn = e.CreatedOn, 
        ModifiedBy = e.ModifiedBy, 
        ModifiedOn = e.ModifiedOn, 
        RSVPs = from r in e.RSVP 
          select new BizObjects.RSVP 
          { 
           RSVPId = RSVPId, 
           // etc. 
          } 
       }; 
Cuestiones relacionadas