2012-11-14 5 views
-2

j'ai une requête comme celle qui relie deux entités:2 années GroupJoin en une seule requête

IEnumerable<ICD.ViewModels.HomeSearchViewModel> query = 
ICDUnitOfWork.AlphaGroups.Find().GroupJoin(ICDUnitOfWork.Alphas.Find(), 
              a => a.AlphaGroupID, 
              g => g.AlphaGroupID, 
              (alphaGroups, alphas) => 
              new ICD.ViewModels.HomeSearchViewModel 
              { 
               AlphaGroups = 
                alphaGroups, 
               Alphas = alphas, 
               SearchTerm = searchTerm 
              }).OrderBy(x => x.AlphaGroups.Title); 

J'ai besoin de se joindre à l'entité Alphas avec une autre entité appelée « codes ». Est-il possible de le faire dans une seule requête, ou devrais-je le décomposer en 2 requêtes distinctes?

Répondre

1

Une requête Entity Framework norme ressemblerait plus:

var query = 
    from a in dbContext.Alphas 
    from g in a.AlphaGroups 
    from c in a.Codes 
    select new {Alpha = a, AlphaGroup = g, Code = c} 

Ou peut-être:

var query = 
    dbContext.Alphas.Include("AlphaGroups").Include("Codes"); 

Pourquoi votre requête l'air si mauvais?

+0

Ma requête est mauvaise et je devrais me sentir mal? – user547794

+0

Ne vous sentez pas mal. Soyez ouvert à plus de façons d'apporter des tables supplémentaires. La question ne rend pas les relations assez claires entre les tables pour choisir entre ces moyens. Je ne peux pas recommander GroupJoin en fonction des informations présentées. –

Questions connexes