Question

J'essaie désespérément d'utiliser LinqKits PredicateBuilder pour permettre à l'utilisateur de saisir un terme de recherche dans une zone de texte et de renvoyer les enregistrements de deux tables/ensembles d'entités de base de données, mais j'ai du mal à aller quelque part.La structure (simplifiée) de la base de données est la suivante :

Person                Alias
------                ------
                      A_ID
P_ID ---------------< P_ID
P_FIRST_NAME          A_FIRST_NAME
P_SURNAME             A_SURNAME

Ainsi, chaque personne peut avoir 0 ou plusieurs alias.Ce que j'essaie de faire, c'est de permettre à l'utilisateur de rechercher un nom et d'extraire les lignes de la table Personne où ce nom correspond à celui de la table Personne ou Alias.Pour l'instant j'ai :

        var peopleQuery = MainFrm.genesisContext.People.AsExpandable();
        var peoplePredicate = PredicateBuilder.True<Person>();

        var aliasQuery = MainFrm.genesisContext.Alias.AsExpandable();
        var aliasPredicate = PredicateBuilder.False<Alias>();

        if (!String.IsNullOrEmpty(txtFirstName.Text.Trim()))
        {
            peoplePredicate = peoplePredicate.And(p => p.P_FIRST_NAME == txtFirstName.Text);

            aliasPredicate = aliasPredicate.And(a => a.A_FIRST_NAME == txtFirstName.Text);

            peoplePredicate = peoplePredicate .Or(p => aliasPredicate);
        }

Cela ne fonctionne pas car j'essaie de convertir People en Alias.Fondamentalement, je suis complètement bloqué et je ne sais pas s'il est même possible de faire une requête Ou sur deux tables différentes (?)

Était-ce utile?

La solution

Je peux penser à plusieurs solutions possibles:

  1. Inclure le prénom de chaque personne dans le formulaire table des alias, et il suffit de chercher sur le Tableau des alias, ou
  2. Union les deux tables ensemble avant la recherche, ou
  3. Lancer une requête Linq qui joint la table Alias à la table Person, et utilisez le résultat dans votre recherche, y compris votre état OR
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top