IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Silverlight Discussion :

Binding HS avec une requête LINQ retournant plusieurs tables


Sujet :

Silverlight

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Inscrit en
    Octobre 2008
    Messages
    111
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 111
    Par défaut Binding HS avec une requête LINQ retournant plusieurs tables
    Bonjour à tous

    J'ai un problème lorsque j'essaie de binder une DataGrid avec une requête LINQ retournant plusieurs tables.

    Extrait de ma page XAML :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <data:DataGrid x:Name="dg" AutoGenerateColumns="False">
      <data:DataGrid.Columns>
        <data:DataGridTextColumn Binding="{Binding field1}" />
    ...
    Extrait du code C# qui fonctionne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    var query = from t1 in context.table1
      join t2 in context.table2 on t1.field1 = t2.field2
      select t1;
    dg.ItemsSource = query;
    Extrait du code C# qui ne fonctionne pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    var query = from t1 in context.table1
      join t2 in context.table2 on t1.field1 = t2.field2
      select new { t1.field1, t2.field2 };
    dg.ItemsSource = query;
    Le 2ème code C# ne fonctionne pas, car à l'exécution ma datagrid a le bon nombre de lignes mais ses cellules sont vides... j'ai cherché, sans succès
    Merci d'avance à vous

  2. #2
    Rédacteur
    Avatar de Nathanael Marchand
    Homme Profil pro
    Expert .Net So@t
    Inscrit en
    Octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert .Net So@t
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Par défaut
    Citation Envoyé par abbepierre94 Voir le message
    Bonjour à tous

    J'ai un problème lorsque j'essaie de binder une DataGrid avec une requête LINQ retournant plusieurs tables.

    Extrait de ma page XAML :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <data:DataGrid x:Name="dg" AutoGenerateColumns="False">
      <data:DataGrid.Columns>
        <data:DataGridTextColumn Binding="{Binding field1}" />
    ...
    Extrait du code C# qui fonctionne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    var query = from t1 in context.table1
      join t2 in context.table2 on t1.field1 = t2.field2
      select t1;
    dg.ItemsSource = query;
    Extrait du code C# qui ne fonctionne pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    var query = from t1 in context.table1
      join t2 in context.table2 on t1.field1 = t2.field2
      select new { t1.field1, t2.field2 };
    dg.ItemsSource = query;
    Le 2ème code C# ne fonctionne pas, car à l'exécution ma datagrid a le bon nombre de lignes mais ses cellules sont vides... j'ai cherché, sans succès
    Merci d'avance à vous
    Si le modèle est bien fait, il n'ya pas besoin de faire de jointures, simplement contrôler le chargement des jointures automatiques (via Include notamment)

  3. #3
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Par défaut
    Sinon, plutôt qu'un type anonyme, essaye de faire ta projection dans un type définit à part et vois si ca marche.

  4. #4
    Membre actif
    Inscrit en
    Octobre 2008
    Messages
    111
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 111
    Par défaut
    Si le modèle est bien fait, il n'ya pas besoin de faire de jointures, simplement contrôler le chargement des jointures automatiques (via Include notamment)
    Euh... vu que je ne comprends pas trop comment cela est possible, considérons que mon modèle est pourri Peux-tu me mettre un mini-bout de code de ce que ça aurait fait en C# si j'avais bien lié mes tables stp ?
    En fait, j'ai juste incorporé mes tables dans plusieurs DomainService, en regroupant les tables dans les DomainService suivant une logique fonctionnelle.

    Sinon, plutôt qu'un type anonyme, essaye de faire ta projection dans un type définit à part et vois si ca marche.
    Tu veux dire que j'aurais pu rajouter un JOIN sur une table ou vue qui elle aurait nativement les champs dont j'ai justement besoin ?

    Mon problème me semblait super simple pourtant, je pensais que c'était juste une erreur de syntaxe...

  5. #5
    Rédacteur
    Avatar de Nathanael Marchand
    Homme Profil pro
    Expert .Net So@t
    Inscrit en
    Octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert .Net So@t
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Par défaut
    Citation Envoyé par abbepierre94 Voir le message
    Euh... vu que je ne comprends pas trop comment cela est possible, considérons que mon modèle est pourri Peux-tu me mettre un mini-bout de code de ce que ça aurait fait en C# si j'avais bien lié mes tables stp ?
    En fait, j'ai juste incorporé mes tables dans plusieurs DomainService, en regroupant les tables dans les DomainService suivant une logique fonctionnelle.


    Tu veux dire que j'aurais pu rajouter un JOIN sur une table ou vue qui elle aurait nativement les champs dont j'ai justement besoin ?

    Mon problème me semblait super simple pourtant, je pensais que c'était juste une erreur de syntaxe...
    Si t'as une classe Bonhomme avec une liste de Voiture, les entités Bonhomme et Voiture sont stockés dans des tables différentes, la jointure est automatique: je peux ainsi utiliser monBonhomme.Voitures.Where(blabla)
    Ca marche bien avec le lazy loading lorsque tu est dans un contexte connecté. Sauf qu'à l'autre bout du webservice ca ne marche pas, il faut faire un eager loading en utilisant Include.

Discussions similaires

  1. Réponses: 2
    Dernier message: 29/11/2011, 14h29
  2. Réponses: 0
    Dernier message: 29/04/2009, 16h35
  3. Formulaire provenant d'une requête faites de plusieurs tables
    Par olivier777 dans le forum Requêtes et SQL.
    Réponses: 6
    Dernier message: 07/05/2008, 12h31
  4. Encore une requête complexe sur plusieurs tables
    Par DenPro dans le forum Langage SQL
    Réponses: 5
    Dernier message: 09/12/2003, 19h05
  5. A propos d'une requête SQL sur plusieurs tables...
    Par ylebihan dans le forum Langage SQL
    Réponses: 2
    Dernier message: 14/09/2003, 16h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo