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

Accès aux données Discussion :

LinqToEntities : Problème sur certain .Include(), quel peut être la source d'erreur?


Sujet :

Accès aux données

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    284
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 284
    Points : 79
    Points
    79
    Par défaut LinqToEntities : Problème sur certain .Include(), quel peut être la source d'erreur?
    Bonjour à tous,

    J'ai un petit problème que je ne comprends pas sur mon application.
    Je vais essayer d'être le plus clair possible malgré le fait que je ne peux pas trop en dire
    J'utilise EntityFramework via LinqToEntities et Npgsql (provider PostgreSQL).

    J'ai besoin de récupérer des données dans plusieurs de mes tables en un seul coup.
    Je fais donc quelque chose comme ceci.

    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    Db = new PostgresqlGecoContext();
    Db.Connection.Open();
    var query = Db.table1
    	.Include("table2")
    	.Include("table3")
    	.Include("table4")
    	.Include("table5")
    	.Include("table6")
    	.Include("table4")
    	.Include("table7")
     
    	.Include("table4.table8")
    	.Include("table4.table9")
    	.Include("table4.table10")
    	.Include("table4.table10.table11");

    Ok. J'ai le bon nombre de résultat, et tout est OK
    Par contre quand je rajoute d'autre Include(), j'ai une erreur qui apparait.

    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
     
    Db = new PostgresqlGecoContext();
    Db.Connection.Open();
    var query = Db.table1
    	.Include("table2")
    	.Include("table3")
    	.Include("table4")
    	.Include("table5")
    	.Include("table6")
    	.Include("table4")
    	.Include("table7")
     
    	//table4
    	.Include("table4.table8")
    	.Include("table4.table9")
    	.Include("table4.statut")
    	.Include("table4.table12")
    	.Include("table4.table12.table13")
    	.Include("table4.table12.table14")
    	.Include("table4.table12.table15")
    	.Include("table4.table12.table16")
    	.Include("table4.table12.table17")
    	.Include("table4.table12.table18")
     
    	.Include("table4.table10")
    	.Include("table4.table10.table11");

    Voici l'erreur:

    A first chance exception of type 'System.Data.EntityCommandCompilationException' occurred in System.Data.Entity.dll
    Si j'enlève les include si dessous, je n'ai plus l'erreur.
    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    .Include("table4.table10")
    .Include("table4.table10.table11");
    Ce qui est étonnant c'est que dans le 1er exemple je l'avais et ça ne bug pas.
    On dirait que c'est la combinaison de certain include qu'il n'aime pas.
    Je sais que ce n'est pas évident de répondre comme ça, mais est ce que quelqu'un à une idée d'une cause possible?
    Si vous avez des pistes ça m'intérèsse beaucoup.
    Y a t('il un moyen de faire différement sinon?
    Un grand merci.

  2. #2
    Membre chevronné Avatar de Er3van
    Homme Profil pro
    Architecte Logiciel
    Inscrit en
    Avril 2008
    Messages
    1 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte Logiciel
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2008
    Messages : 1 430
    Points : 2 227
    Points
    2 227
    Par défaut
    Si je ne fais pas erreur, tu avais déjà un problème similaire avec le provider MySQL non ?

    Est-ce que ce sont bien des Include() dont tu as besoin ? Des join ne feraient pas l'affaire ?
    One minute was enough, Tyler said, a person had to work hard for it, but a minute of perfection was worth the effort. A moment was the most you could ever expect from perfection.

    -- Chuck Palahniuk, Fight Club, Chapter 3 --

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    284
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 284
    Points : 79
    Points
    79
    Par défaut
    Citation Envoyé par Er3van Voir le message
    Si je ne fais pas erreur, tu avais déjà un problème similaire avec le provider MySQL non ?

    Est-ce que ce sont bien des Include() dont tu as besoin ? Des join ne feraient pas l'affaire ?
    En effet c'était un peu similaire. MySQL Connecotr bugger pas mal sur le nombre de résultat retourné en fonction des Include que je fesais.
    Par contre pour être honnête, je ne connais pas la différence entre include et join.

    Je veux me retoruver au final avec une liste de "table1" qui possède les autres tables comme objet. Tu penses que le join peut faire l'affaire?
    Où trouver la différence entre Include et Join stp?

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    284
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 284
    Points : 79
    Points
    79
    Par défaut
    Bon voilà, pour compléter mon post et sachant que table1, table2, etc... ne sont pas trop parlant, j'ai refait une base de données avec des nopms de tables et de champs différents.
    Les noms sont donc là à titre d'exemple, pas évident de trouver quelque chose qui colle pile poile
    En tout cas, les cardinalités sont respectées.

    Voci mon EDMX
    [MOD] A mettre en pièce jointe

    Quand je fais ceci tout fonctionne.
    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
     
    var Db = new PostgresqlsportContext();
    Db.Connection.Open();
     
    var query = Db.competition
    	.Include("sponsor")
    	.Include("club")
    	.Include("region")
    	.Include("ville")
    	.Include("epreuve")
    	.Include("difficulte")
    	.Include("epreuve")
     
    	.Include("epreuve.directeur")
    	.Include("epreuve.superviseur")
    	.Include("epreuve.avancement")
    	.Include("epreuve.epreuve_detail")
    	.Include("epreuve.epreuve_detail.complexite_duree")
    	.Include("epreuve.epreuve_detail.complexite_distance")
    	.Include("epreuve.epreuve_detail.total_unite_duree")
    	.Include("epreuve.epreuve_detail.total_unite_distance")
    	.Include("epreuve.epreuve_detail.detail_duree")
    	.Include("epreuve.epreuve_detail.detail_distance")
    	.Include("epreuve.epreuve_detail.detail_distance.etape")
    	.Include("epreuve.epreuve_detail.detail_distance.etape_statut");
     
     
    var nbResultQuery = query.Count();
    var e = query.ToList();

    Par contre quand ça bug quand je rajoute à la fin
    .Include("epreuve.epreuve_utilisateur_participant")
    .Include("epreuve.epreuve_utilisateur_participant.utilisateur");

    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
     
    var Db = new PostgresqlsportContext();
    Db.Connection.Open();
     
    var query = Db.competition
    	.Include("sponsor")
    	.Include("club")
    	.Include("region")
    	.Include("ville")
    	.Include("epreuve")
    	.Include("difficulte")
    	.Include("epreuve")
     
    	.Include("epreuve.directeur")
    	.Include("epreuve.superviseur")
    	.Include("epreuve.avancement")
    	.Include("epreuve.epreuve_detail")
    	.Include("epreuve.epreuve_detail.complexite_duree")
    	.Include("epreuve.epreuve_detail.complexite_distance")
    	.Include("epreuve.epreuve_detail.total_unite_duree")
    	.Include("epreuve.epreuve_detail.total_unite_distance")
    	.Include("epreuve.epreuve_detail.detail_duree")
    	.Include("epreuve.epreuve_detail.detail_distance")
    	.Include("epreuve.epreuve_detail.detail_distance.etape")
    	.Include("epreuve.epreuve_detail.detail_distance.etape_statut")
     
    	.Include("epreuve.epreuve_utilisateur_participant")
    	.Include("epreuve.epreuve_utilisateur_participant.utilisateur");
     
    var nbResultQuery = query.Count();
    var e = query.ToList();

    Je voulais vérifier si le problème vient des deux lignes, j'ai donc fait
    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    var Db = new PostgresqlsportContext();
    Db.Connection.Open();
     
    var query = Db.competition
    	.Include("sponsor")
    	.Include("club")
    	.Include("region")
    	.Include("ville")
    	.Include("epreuve")
    	.Include("difficulte")
    	.Include("epreuve")
     
    	.Include("epreuve.epreuve_utilisateur_participant")
    	.Include("epreuve.epreuve_utilisateur_participant.utilisateur");
     
     
    var nbResultQuery = query.Count();
    var e = query.ToList();

    et là ça marche aussi. Bref, c'est vraiment la combinaison des deux qui bug.
    Quelqu'un à t'il une idée???
    Je suis dans l'inconnu là, toute les idées sont bonnes à prendre.

    PS: Je peux fournir le projet et le sql de la base si ça intérèsse.

  5. #5
    Membre chevronné Avatar de Er3van
    Homme Profil pro
    Architecte Logiciel
    Inscrit en
    Avril 2008
    Messages
    1 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte Logiciel
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2008
    Messages : 1 430
    Points : 2 227
    Points
    2 227
    Par défaut
    En recherchant un peu sur la MSDN :

    Citation Envoyé par MSDN
    Using query paths can result in complex commands being executed against the data source from seemingly simple object queries. This occurs because one or more joins are required to return related objects in a single query, which results in redundant data for each related entities being returned from the data source. This complexity is greater in queries against a complex model, such as an entity with inheritance or a path that includes many-to-many relationships. Use the ToTraceString method to see the command that will be generated by an ObjectQuery. When a query path includes too many related objects or the objects contain too much row data, the data source might not be able to complete the query. This occurs if the query requires intermediate temporary storage that exceeds the capabilities of the data source. When this occurs, you can reduce the complexity of the data source query by explicitly loading related objects or enabling deferred loading. If after optimizing a complex query you still get frequent timeouts, consider increasing the timeout value by setting the CommandTimeout property.
    How to: Explicitly Load Related Objects

    EDIT : C'est plus le but de ta requête qui me permettrait de comprendre ce que tu veux faire et pourquoi tu fais autant d'include..
    One minute was enough, Tyler said, a person had to work hard for it, but a minute of perfection was worth the effort. A moment was the most you could ever expect from perfection.

    -- Chuck Palahniuk, Fight Club, Chapter 3 --

  6. #6
    Membre expert Avatar de iberserk
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Novembre 2004
    Messages
    1 795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 795
    Points : 3 173
    Points
    3 173
    Par défaut
    Mais tu charges toute ta base de données????????!!!!!!!!!
    Prendre conscience, c'est transformer le voile qui recouvre la lumière en miroir.
    MCTS Database Development
    MCTS Database Administration

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    284
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 284
    Points : 79
    Points
    79
    Par défaut
    Ok, donc ça serait parce qu'il y a trop de relation.
    ça me surprend qu'il est mis une limite si base, parce que ej suppose qu'il y à des sytème avec des 100 et des 100 de tables.

    Pourquoi je fait ça.
    La page d'accueil de mon application est constituée d'un dashbord, c'est à dire qu'il y à plusieur onglets avec dans chaque onglet une liste de competition.
    Je ne charge pas tous les enregistrement puisque normalement il y a des .Where() derrière (enlevés pour simplifier mon problème) mais par contre j'ai besoin de toutes les données concernant un enregistrement.

    Par exemple:
    Onglet "En cours">
    Titre competition | Region | Ville | Difficulte | Sponsor | ....
    Quand on clique sur cette competition, il y a les détails qui apparaissent.

    Je pensais donc faire tous mes .Include().Include().Include().... et faire un .where() pour récupérer que ce qui m'intérèsse.
    Du coup, je ne sais plus vraiment comment faire. Mes condition peuvent être faites sur plusieur table (notamment pour la recherche).
    Comment mis prendre?

  8. #8
    Membre chevronné Avatar de Er3van
    Homme Profil pro
    Architecte Logiciel
    Inscrit en
    Avril 2008
    Messages
    1 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte Logiciel
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2008
    Messages : 1 430
    Points : 2 227
    Points
    2 227
    Par défaut
    Je pense que le procédé le plus judicieux serait de récupérer les informations uniquement au moment où tu en as besoin !

    Tant que l'user ne clique pas sur l'onglet tu ne les récupères pas.
    One minute was enough, Tyler said, a person had to work hard for it, but a minute of perfection was worth the effort. A moment was the most you could ever expect from perfection.

    -- Chuck Palahniuk, Fight Club, Chapter 3 --

  9. #9
    Membre expert Avatar de iberserk
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Novembre 2004
    Messages
    1 795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 795
    Points : 3 173
    Points
    3 173
    Par défaut
    ça me surprend qu'il est mis une limite si base, parce que ej suppose qu'il y à des sytème avec des 100 et des 100 de tables.
    Oui mais tu ne t'amuses jamais à tout charger en même temps :-)...

    Tests les perfs en lazyloading.
    Tu as d'autres techniques avec Entities: charger chaque table distinctement avec le même datacontext: c'est ENTITIES qui se charge de refaire les relation en mémoire...
    Prendre conscience, c'est transformer le voile qui recouvre la lumière en miroir.
    MCTS Database Development
    MCTS Database Administration

  10. #10
    Membre chevronné Avatar de Er3van
    Homme Profil pro
    Architecte Logiciel
    Inscrit en
    Avril 2008
    Messages
    1 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte Logiciel
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2008
    Messages : 1 430
    Points : 2 227
    Points
    2 227
    Par défaut
    +1, et je pense que c'est plus performant dans ce cas là, par rapport à ta jointure.

    (Si on pouvait éviter un troll de plus sur les perf' d'EF...)
    One minute was enough, Tyler said, a person had to work hard for it, but a minute of perfection was worth the effort. A moment was the most you could ever expect from perfection.

    -- Chuck Palahniuk, Fight Club, Chapter 3 --

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    284
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 284
    Points : 79
    Points
    79
    Par défaut
    Bon avant de continuer, merci de votre aide à tous.
    C'est mon 1er vrai projet en C# et c'est un pas forcément très évident.

    Citation Envoyé par Er3van Voir le message
    Je pense que le procédé le plus judicieux serait de récupérer les informations uniquement au moment où tu en as besoin !

    Tant que l'user ne clique pas sur l'onglet tu ne les récupères pas.
    Ok.
    Imaginons que l'utilisateur clique sur l'onglet, je vias donc déclencher ma requête, mais ci je laisse toutes les jointures ça pète.

    Tu as d'autres techniques avec Entities: charger chaque table distinctement avec le même datacontext: c'est ENTITIES qui se charge de refaire les relation en mémoire...
    Quelqu'un peut m'en dire un peu plus la dessus svp?

    Petite question BDD:
    Je peux monter à combien de reqûetes??? Parce que la avec tous les Include(), on va dire que j'avais 6 requêtes en tout (une par onglet).
    Le problème c'est que si je récupére seulement les compétitions puis pour chaque compétinions toutes les manches, ....... etc, etc et que j'ai 400 compétitions dans le 1er onglet, je vais avoir:
    - 1 requête (pour les compétitions)
    - 400 requêtes (pour récupérer les manches de mes compétition)
    - Le nombre de manche * ......
    ça va me faire beaucoup de requête au total.

    Est ce que si je vous représente une vue ça peut vous aider?

  12. #12
    Membre expert Avatar de iberserk
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Novembre 2004
    Messages
    1 795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 795
    Points : 3 173
    Points
    3 173
    Par défaut
    (Si on pouvait éviter un troll de plus sur les perf' d'EF...)

    J'avais rien disssssssss
    Prendre conscience, c'est transformer le voile qui recouvre la lumière en miroir.
    MCTS Database Development
    MCTS Database Administration

  13. #13
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    284
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 284
    Points : 79
    Points
    79
    Par défaut
    @ibersek
    Tu as d'autres techniques avec Entities: charger chaque table distinctement avec le même datacontext: c'est ENTITIES qui se charge de refaire les relation en mémoire...
    Je ne vois pas vraiment ce que tu veux dire. Tu n'aurais pas un exemple sous la main par hasard?

  14. #14
    Membre expert Avatar de iberserk
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Novembre 2004
    Messages
    1 795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 795
    Points : 3 173
    Points
    3 173
    Par défaut
    Visionnez attentivement ce webcast(le 9 sur l'optimisation).

    http://msdn.microsoft.com/fr-fr/netf.../hh237550.aspx
    Prendre conscience, c'est transformer le voile qui recouvre la lumière en miroir.
    MCTS Database Development
    MCTS Database Administration

  15. #15
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    284
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 284
    Points : 79
    Points
    79
    Par défaut
    Ok merci beaucoup pour le lien, je m'en vais regarder ça.

  16. #16
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    284
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 284
    Points : 79
    Points
    79
    Par défaut
    Merci beaucoup, c'est axactement ce que je recherche et c'est vraiment ma problématique.
    La solution avancée me plait pas mal par contre impossible de la faire fonctionner.

    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    var competitionList = database.competition.ToList();	// OK
    IEnumerable<int> competitionIdList = competitionList.Select(c => c.id_competition);	//Ok
    var epreuveList = database.epreuve.Where(o => competitionIdList.Contains(o.id_competition)).ToList();	//Erreur

    ### Exception
    Message: LINQ to Entities does not recognize the method 'Boolean Contains[Int32](System.Collections.Generic.IEnumerable`1[System.Int32], Int32)' method, and this method cannot be translated into a store expression.
    Type: System.NotSupportedException
    Source: System.Data.Entity
    Est ce que ça vient de mon provider où j'ai fait une erreur quelque part?

  17. #17
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    284
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 284
    Points : 79
    Points
    79
    Par défaut
    A la place de .Contains() j'ai essayé .Any() mais j'ai aussi une erreur.
    J'ai donc essayé de faire comme ça:

    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    IEnumerable<competition> competitions;
    using (var context = new PostgresqlContext())
    {
    	competitions = context.competition.Take(5).ToList();
     
    	IQueryable<epreuve> queryEpreuve = context.epreuve;
    	foreach (var oneCompetion in competitions)
    	  queryEpreuve = queryEpreuve.Where(epreuve => oneCompetition.id_competition == epreuve.id_epreuve);
     
    	queryEpreuve.ToList();
    }
     
    foreach (var oneCompetition in competitions)
    {
    	Console.WriteLine("=== Competition ===");
    	Console.WriteLine(oneCompetition.id_competition + " - " + oneCompetition.titre);
    	Console.WriteLine("Nombre epreuves: "oneCompetition.epreuve.Count);
    	Console.WriteLine();
    }

    Le seul problème que j'ai c'est que dans le where du sql généré j'ai des AND et non des OR. Comment puis je faire svp?

    Exemple:
    WHERE (((("Extent1"."id_competition"= (((5)))) AND ("Extent1"."id_competition"= (((5))))) AND ("Extent1"."id_competition"= (((5))))) AND ("Extent1"."id_competition"= (((5))))) AND ("Extent1"."id_competition"= (((5))))

  18. #18
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    284
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 284
    Points : 79
    Points
    79
    Par défaut
    Après plusieurs test, je pense pouvoir affirmer que c'est un problème de version de Framwork.
    Je viens de tester sur un projet avec le Framework 4 et je n'ai plus l'erreur.
    C'est la mauvaise nouvelle de la journée.

  19. #19
    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 : 37
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Points : 8 080
    Points
    8 080
    Par défaut
    Ben oui quand tu mets plusieurs Where à la suite, ca génère des AND

    Edit: cela dit faut s'y attendre si y'a des bugs sur EF en 3.5. Il etait pas du tout mature a cette époque. Les améliorations c'est sur le framework 4.

  20. #20
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    284
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 284
    Points : 79
    Points
    79
    Par défaut
    Quelle misère de ne pas pouvoir utiliser le Framework 4.0

    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    IEnumerable<demande> competitionList;
    using(var context = new PostgresqlGecoContext())
    {
    	context.epreuve.ToList();
    	competitionList = context.competition.ToList();
    }
    Quand on fait ça, je retrouve automatiquement mes épreuves dans mes compétitions. ça marche parce que j'ai une relation 1..*, peut on appliquer le même principe à des relations * - *.

    Je voudrais par exemple pouvoir avoir mes competitions avec la liste des sponsors remplie.

Discussions similaires

  1. Réponses: 19
    Dernier message: 20/01/2012, 14h25
  2. Réponses: 2
    Dernier message: 30/05/2010, 20h44
  3. Problème sur un include/require
    Par Porkepix dans le forum Langage
    Réponses: 10
    Dernier message: 14/07/2008, 15h19
  4. INDEX sur une colonne qui peut être NULL
    Par dorian53 dans le forum Requêtes
    Réponses: 15
    Dernier message: 29/11/2007, 17h13

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