2010-07-19 7 views
0

J'ai un problème avec le chargement des données liées via WCF RIA et Entity Framework - aidez-moi s'il vous plaît - je ne sais pas comment le résoudre.Silverlight + WCF RIA + comment inclure un ensemble conditionnel d'enregistrements enfants (pas tous sauf un ensemble)

J'ai Pièce < - RoomRecords (contient les champs startDate/endDate et la référence à la pièce parente) et je dois charger RoomRecords où, p. date de début> = 1.07.2010 et finDate < = 15.07.2010. La salle des parents devrait également être incluse. J'utilise l'attribut [Include] sur la propriété Room plus i'm using this approach - 'How to do a Conditional Include' - pour récupérer les données associées. Le problème est que côté client je reçois Room avec tous les roomRecords liés (par exemple, où date de début/fin sont de l'année dernière - ce n'est pas ce dont j'ai besoin - il y aura beaucoup d'enregistrements!) Mais j'ai besoin pour obtenir des chambres avec RoomRecords juste avec date de début/fin qui convient à la condition mentionnée. Quelle est la façon de le résoudre? Je vous remercie!

Répondre

1

Ups!

On dirait que j'avais tort - tout fonctionne bien et le chargement conditionnel fonctionne correctement ... Pardon!

la requête:

 var res = from room in this.ObjectContext.Rooms 
        from rr in room.RoomRecords 
        where 
        (rr.StartDate >= startDate.Date && rr.StartDate < endDate) || 
        (rr.EndDate > startDate.Date && rr.EndDate < endDate) || 
        (rr.StartDate < startDate.Date && rr.EndDate >= endDate) 
        select new { 
         Room = rr.Room, 
         rRec = rr 
        }; 

     var ret = res.AsEnumerable().Select(d => d.Room); 

     var justRoomRecords = ret.SelectMany(r => r.RoomRecords).ToList(); // just to check 

     return ret; 
Questions connexes