2

Je travaille avec le modèle Entity Framework. Avec l'aide de LINQ, j'essaye de charger des entités et leurs données associées dans une seule requête (c.-à-d.Affichage de la table associée à l'aide de LINQ

Voici le code-behind:

protected void btn5_Click(object sender, EventArgs e) 
{ 
    using (EStoreEntities ctx5 = new EStoreEntities()) 
    { 
     var query = (from o in ctx5.Order_Details.Include("Order") select o); 
                  //Order -navigation property 

     tb5.Text = (queryas ObjectQuery).ToTraceString(); 
     gv5.DataSource = query; 
     gv5.DataBind(); 
    } 
} 

J'utilise le code ASP suivant:

<asp:Button ID="btn5" runat="server" Text="Button" onclick="btn5_Click" /> 
<asp:GridView ID="gv5" runat="server"></asp:GridView> 
<asp:TextBox ID="tb5" runat="server" TextMode="MultiLine"></asp:TextBox> 

Comment puis-je réparer mon code pour l'affichage du contenu du tableau de l'ordre dans mon contrôle GridView ? Merci d'avance.

+0

Je crois que vous devez spécifier les propriétés des entités liées ('Order') dans le' explicitement asp: GridView' avec des chemins en pointillés comme 'Order.ShippingDate', etc. La colonne automatique de liaison directe ne fonctionne que pour propriétés de l'entité liée ('Order_Details'). Peut-être l'exemple avec le 'asp: TemplateField' aide ici: http://stackoverflow.com/a/2289408/270591. Je pense que le problème est dans votre définition GridView, pas dans votre requête EF. – Slauma

Répondre

0
protected void btn5_Click(object sender, EventArgs e) 
{ 
    using (EStoreEntities ctx5 = new EStoreEntities()) 
    { 
     var query = ctx5.Order_Details.Select(x => new { 
                 Col1 = x.AAA, 
                 Col2 = x.BBB, 
                 Col3 = x.Order.AAA 
                }); 

     tb5.Text = (query as ObjectQuery).ToTraceString(); 
     gv5.DataSource = query; 
     gv5.DataBind(); 
    } 
} 
Questions connexes