2011-09-24 8 views
2

J'ai construit une base de données et utilisé Entity Framework pour générer certaines classes de modèle de domaine. Fondamentalement VideCollection est une collection de vidéos et je voudrais afficher la chaque collection vidéo avec ses vidéos sur une page. En suivant le modèle de référentiel, j'ai créé un référentiel pour la collection de vidéos. Je peux tirer les objets VideoCollection de la base de données. Le problème est que je dois «réparer» les objets pour ajouter leurs vidéos correspondantes. Est-ce la bonne façon de le faire? Si c'est le cas, j'ai besoin de "réparer" les vidéos pour apporter leurs commentaires, etc etc causant une énorme chaîne. Je comprends les requêtes différées LINQ mais cela ne semble pas nécessaire pour extraire autant d'informations de la base de données. J'utilise ASP.NET MVC3. Si quelqu'un peut me diriger dans la bonne direction, il serait très apprécié!Modèle de référentiel avec relations de clé étrangère dans EF

using System; 
using System.Linq; 
using VideoCart.Domain.Abstract; 
using VideoCart.Domain.Entities; 

namespace VideoCart.Domain.Concrete 
{ 
public class EFVideoRepository : IVideoRepository 
{ 
    private readonly EFDbContext _context = new EFDbContext(); 

    public IQueryable<VideoCollection> GetVideoCollections() 
    { 
     IQueryable<VideoCollection> videoCollections = _context.VideoCollections; 
     foreach (var videoCollection in videoCollections) 
     { 
      videoCollection.Videos = _context.Videos.Where(x => x.VideoCollectionId == videoCollection.Id); 
     } 
     return videoCollections; 
    } 
} 
} 
+0

Selon votre requête et le schéma de votre base de données, il semble que vous vouliez charger la base de données complète dans la mémoire? – BrokenGlass

+0

La question est plus sur la mise en œuvre du modèle de repisotry. J'ai besoin de quelques informations de certains éléments de haut niveau dans la base de données - je me demande s'il est nécessaire de charger tous les éléments? Cela ne semble pas du tout correct. – greenimpala

+1

* Vous * pouvez décider quelles parties vous voulez charger, c'est ce que le chargement EF paresseux et/ou les requêtes 'Include()' sont pour – BrokenGlass

Répondre

2

Je ne suis pas sûr que ce soit ce que vous voulez, mais vous pouvez utiliser la méthode include pour spécifier les objets associés que vous souhaitez retirer et les résultats joindre à la requête.

Questions connexes