2010-03-13 9 views
5

Ho entità Entity Framework Eventi che hanno un'entitàCollection di RSVP. Voglio convertire EntityCollection di RSVP in un Elenco generico <> di una classe POCO RSVP.Come convertire un'entitàCollection <T> in elenco <POCOObj>

Quindi voglio EntityCollection -> List.

Quale sarebbe il modo migliore per raggiungere questo obiettivo?

Finora ho questo (che manca la parte 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 = ??? 
        }; 

Grazie.

+0

Checkout Questo [Proiezioni e Include] (http://www.thejoyofcode.com/Projection_blows_includes_in_Entity_Framework. aspx) post del blog. – kervin

risposta

1

Suggerisco di inserire il codice "select" nel metodo di estensione denominato qualcosa come "ToPoco (questo evento evento)" (verrà utilizzato per la singola conversione "Evento").

È inoltre necessario implementare un altro metodo di estensione per più conversioni "Evento" come l'estensione List<BizObjects.Event> ToPoco(this List<Event> events), che chiama semplicemente il BizObjects.Event Poco(this Event event) in un ciclo.

Dopo che la query sarà simile a questa:

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

A proposito di RSVP:

Basta normalmente crea un altro metodo di estensione per la conversione RSVP come

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

Poi puoi quindi chiamare RSVPs = e.RSVPs.ToList().ToPoco()


Soluzione per adattarsi direttamente a voi il codice potrebbe essere anche qualcosa di simile:

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

Ho provato la tua ultima soluzione, ma ho dovuto aggiungere .ToList a .Select. Tuttavia, ho ricevuto un errore EntityFramework che affermava che non poteva convertire ToList(). Pubblicherò l'errore più tardi quando avrò la possibilità. Mi hai indicato nella giusta direzione. Grazie! –

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. 
          } 
       }; 
Problemi correlati