Implémentation de la même fonctionnalité qu'une requête simple contient () devient plus complexe lors de l'utilisation du cadre d'entité et des clés primaires composites. Cet article traite de diverses façons de résoudre ce problème:
Tenter d'utiliser un tuple représentant une valeur de clé primaire composite pour une jointure directe ou une opération contient échoue dans le cadre d'entité. En effet, de telles opérations ne peuvent pas être converties en SQL, car les tuples ne sont pas considérés comme des valeurs d'origine dans ce contexte.
Une autre façon est d'utiliser AsenuMableable () pour extraire les données de la table de la base de données dans la mémoire et effectuer le filtrage nécessaire à l'aide de LINQ sur des objets. Cependant, pour les grandes tables, cette solution est extrêmement inefficace.
Utilisation d'une instruction CONTAINS () pour chaque composant de clé primaire composite entraînera un filtrage incorrect. Cette approche peut produire des résultats trompeurs car les entités ne contenant qu'une seule composante correspondante seront incluses à tort.
Vous pouvez utiliser une requête contenue modifiée () contenant les valeurs calculées dérivées du composant de clé primaire composite (par exemple, entity.id1 * entity.id2). Cependant, cette solution n'est pas déterminable et conduit à de mauvaises performances.
La méthode la plus évolutive consiste à combiner des contenues et des connexions de mémoire. Cette méthode utilise une requête préliminaire contient () pour réduire l'ensemble de résultats, puis l'affiner plus précisément via des connexions mémoire.
Les constructeurs préliminaires comme Linqkit permettent la création de requêtes contenant ou de clauses pour chaque combinaison composite de valeur de clé primaire. Bien que cette méthode puisse fonctionner pour les petites listes, pour les grandes listes, ses performances seront dégradées.
Une autre façon est d'utiliser Union pour combiner plusieurs requêtes qui combinent chaque valeur de clé primaire composite. Cette solution peut fonctionner pour des listes de petites et moyennes.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3