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

Entity Framework Discussion :

Le paramètre « entity » n'était pas lié dans l'expression de requête LINQ to Entities spécifiée.


Sujet :

Entity Framework

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2013
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2013
    Messages : 5
    Points : 9
    Points
    9
    Par défaut Le paramètre « entity » n'était pas lié dans l'expression de requête LINQ to Entities spécifiée.
    J'ai besoin de créer un filtre dynamique, j'ai créé le code suivant:

    Main:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Dictionary<string, List<string>> dictionary = new Dictionary<string, List<string>>();
    dictionary["id"] = new List<string> {"223" };
    dictionary["name"] = new List<string> { "HERO" };
    var query = MyCollectionToLinq<MyEntity>(dictionary);
    la sortie de cette ligne est la suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    entity => (((1 == 1) And (entity.id_DEVISE == 223)) And (entity.LIB_name== "HERO"))

    et c'est ce que je voulais

    fonction MyCollectionToLinq
    Code : 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
    32
    33
    34
    35
    36
    public static Expression<Func<T, bool>> MyCollectionToLinq<T>(Dictionary<string, List<string>> dictionary)
            {
     
                Expression left = Expression.Constant(1, typeof(int));
                Expression right = Expression.Constant(1, typeof(int));
                Expression ex = PredicateBuilder.True<T>();
                 ex= Expression.Equal(left, right);
                 Expression<Func<T, bool>> Myex = null;
     
                foreach (var data in dictionary)
                {
                    var cle = data.Key;
                    var valeur = data.Value;
                    int i = 0;
                    foreach (var val in valeur)
                    {
                        i++;
                        if (i == 1)
                        {
                            left = ex;
                            right = GetLambdaExpression<T>(cle, val);
                            ex = Expression.And(left, right);
                        }
                        else
                        {
                            left = ex;
                            right = GetLambdaExpression<T>(cle, val);
                            ex = Expression.Or(left, right);
                        }
                    }
                   var Ex= Expression.Lambda<Func<T, bool>>(ex, new ParameterExpression[] { Expression.Parameter(typeof(T), "entity") });
                   Myex = Ex;
     
                }
                return Myex;
            }
    jusqu'à présent tout va bien
    Quand j'ai lancé ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    _BindingSource.DataSource = context.MyEntity.Where(query).ToList();
    j'ai obtenu l'erreur suivante:
    Le paramètre « entity » n'était pas lié dans l'expression de requête LINQ to Entities spécifiée.
    Est-ce que quelqu'un d'autre a connu cette erreur et sait comment la résoudre?
    Merci

  2. #2
    Membre expert
    Avatar de GuruuMeditation
    Homme Profil pro
    .Net Architect
    Inscrit en
    Octobre 2010
    Messages
    1 705
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : .Net Architect
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 705
    Points : 3 568
    Points
    3 568
    Par défaut
    Tu ne passes pas de paramètre à ton expression.

    De mémoire, ce devrait être un truc style :

    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     context.Entities.where(d => query(d)).ToList();
    Microsoft MVP : Windows Platform

    MCPD - Windows Phone Developer
    MCPD - Windows Developer 4

    http://www.guruumeditation.net

    “If debugging is the process of removing bugs, then programming must be the process of putting them in.”
    (Edsger W. Dijkstra)

Discussions similaires

  1. Réponses: 7
    Dernier message: 03/05/2011, 10h10
  2. Réponses: 1
    Dernier message: 24/03/2010, 13h01
  3. Réponses: 0
    Dernier message: 29/04/2009, 16h35
  4. [EF] Linq to entities ne supporte pas ToString() et autres ?
    Par lamia69 dans le forum Accès aux données
    Réponses: 4
    Dernier message: 19/12/2008, 15h47
  5. Erreur "function ' ' n'est pas définie dans l'expression"
    Par wanou_le_fou dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 02/07/2007, 16h13

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