1

Je reçois des données de ces deux tables en utilisant linq pour les entités, les relations existent entre les tables sur la base des clés primaires, le jeu de résultats arrive mais chaque ligne répète plusieurs fois dans reult il n'y a pas de lignes en double. Je ne comprends pas comment résoudre cela.ASP.net Entity Framework Lignes renvoyées en double

ici est morceau de code:

StringBuilder sb = new StringBuilder(); 
     string text = txtBoxSearch.Text; 
     OLSContainer ols = new OLSContainer(); 
     var result = from tex in ols.COURSEs 
        from another in ols.UNITs 
        where tex.courseName.Contains(text) || tex.description.Contains(text) || another.unitName.Contains(text) 
        select new { tex,another }; 

     foreach (var cours in result) 
     { 
      sb.AppendLine("<h2 id='" + cours.tex.courseID + "'><a href='admin.aspx?id='" + cours.tex.courseID + "''>" + cours.tex.courseName + "</a></h2>"); 
     } 

     foreach (var cours in result) 
     { 
      sb.AppendLine("<h2 id='" + cours.another.unitID + "'><a href='admin.aspx?id='" + cours.another.unitID + "''>" + cours.another.unitName + "</a></h2>"); 
     } 
+0

A quoi ressemble la requête SQL dans le profileur? Aussi, quelle est la relation complète entre les cours et les unités? Est-ce un un-à-plusieurs? – IronMan84

Répondre

1

Le problème est le suivant:

var result = from tex in ols.COURSEs 
      from another in ols.UNITs 

Il est une jointure croisée. Il correspond à chaque cours avec chaque unité. Il n'utilise aucun FK/PK car aucune relation (propriété de navigation) n'est utilisée dans cette requête. Pour utiliser la relation, vous devez la modifier pour:

var result = from tex in ols.COURSEs 
      from another in tex.SomeNavigationProperty // tex 
+0

Quelle est la solution pour surmonter cela .. J'ai PK, relation FK dans EDM. –

+0

Vous devez interroger la relation et non l'ensemble d'entités directement. Si vous interrogez directement l'ensemble d'entités, vous devez effectuer une jointure manuelle. –

Questions connexes