2010-01-20 2 views
1

J'ai 2 tables A et B qui ont une relation plusieurs à plusieurs. J'utilise des répéteurs imbriqués pour afficher les données dans une page Web. Mon problème est, comment puis-je écrire une requête ObjectQuery ou IQueryable qui retourne les lignes parentes dans A et les lignes enfant dans B afin que je puisse les utiliser comme sources de données pour mes répéteurs interne et externe. J'ai le code que j'ai écrit ci-dessous mais je ne suis pas sûr que ce soit correct ou même proche.Le chargement d'un répéteur imbriqué avec les données de 2 Entity Framework Requêtes

<asp:Repeater ID="A" runat="server"><br/> 
    <ItemTemplate><br/> 
     <h2 class="Information"><br/> 
      <%# Eval("Name") %> (<%#Eval("Abbreviation")%>)<br/> 
     </h2><br/> 
     <hr/><br/> 
     <p> <%# Eval("Description")%> </p><br/> 
     <asp:Repeater ID="B" runat="server"><br/> 
      <ItemTemplate><br/> 
       <li><br/> 
        <a href="..Pages/Category.aspx?<%# Eval("ID") %>"><br/> 
         <%# Eval("Name") %><br/> 
        </a><br/> 
       </li>      <br/> 
      </ItemTemplate><br/> 
     </asp:Repeater><br/> 
    </ItemTemplate><br/> 
</asp:Repeater>  

Ceci est mon C# codebehind jusqu'à présent:

 using (DBEntities connection = new DBEntities()) 
     { 


      ObjectQuery<A> As = connection.A; 
      IQueryable<A> aQuery = from a in As 
               orderby a.SortOrder 
               select a; 


      TechnologyRepeater.DataSource = As; 
      DataBind(); 
     } 
+0

Que voulez-vous dire par: « Quelle est la meilleure façon de le faire avec la combinaison des données dans le cadre de l'entité? » Avez-vous l'association dans votre modèle? Si non, pourquoi pas? –

+0

Mon modèle était un peu déroutant à cause de la façon dont j'ai eu ma participation plusieurs-à-plusieurs. J'ai corrigé le problème et maintenant le plusieurs-à-plusieurs apparaît sans la table de jonction comme il se doit. J'ai alors fait ce que Brian a dit entrer ">. Ai-je besoin de faire quelque chose dans mon IQueryable ou d'ajouter un autre Iérable pour B pour obtenir les données? Je ne sais pas comment je ferais un "> car Bs n'existe pas dans mon système. –

Répondre

1

Beaucoup de beaucoup est configuré de différentes manières en fonction de la structure. Si la classe A a une collection d'entités B, vous pouvez lier directement à la propriété DataSource comme dans:

<asp:Repeater ... DataSource="<% Eval("Bs") %>"> 

Cela dépend de la façon dont les entités sont référencées dans votre modèle objet, qui varie encore selon le nombre à beaucoup d'installation. Check this out: http://thedatafarm.com/blog/data-access/inserting-many-to-many-relationships-in-ef-with-or-without-a-join-entity/

Questions connexes