Maison > développement back-end > C++ > Comment surmonter les restrictions de type anonyme lorsque vous interrogez plusieurs tables avec LINQ à SQL?

Comment surmonter les restrictions de type anonyme lorsque vous interrogez plusieurs tables avec LINQ à SQL?

Patricia Arquette
Libérer: 2025-01-28 00:21:09
original
821 Les gens l'ont consulté

How to Overcome Anonymous Type Restrictions When Querying Multiple Tables with Linq to SQL?

Linq to SQL : gestion des requêtes complexes et des types anonymes

LINQ to SQL est un outil puissant pour l'interaction avec les bases de données, mais des limites existent lorsqu'il s'agit de jeux de résultats complexes, en particulier ceux impliquant des types anonymes. Cela devient souvent évident lors de l'interrogation de plusieurs tables.

Considérez deux tableaux : "Chiens" (avec les colonnes "Nom", "Âge", "BreedId") et "Breeds" ("BreedId", "BreedName"). L'objectif est de récupérer des informations sur les chiens ainsi que leurs noms de race. Une approche naïve utilisant une jointure et une projection de type anonyme pourrait ressembler à ceci :

var result = from d in db.Dogs
             join b in db.Breeds on d.BreedId equals b.BreedId
             select new { Name = d.Name, BreedName = b.BreedName };
Copier après la connexion

Cela échoue car LINQ to SQL nécessite un type mappable, ce qui n'est pas le cas des types anonymes.

La solution : les cours personnalisés

La solution recommandée consiste à définir une classe personnalisée pour représenter les données combinées :

public class DogWithBreed
{
    public Dog Dog { get; set; }
    public string BreedName { get; set; }
}
Copier après la connexion

La requête est ensuite modifiée pour renseigner les instances de cette classe :

var result = from d in db.Dogs
             join b in db.Breeds on d.BreedId equals b.BreedId
             select new DogWithBreed { Dog = d, BreedName = b.BreedName };
Copier après la connexion

Cette approche offre sécurité et extensibilité des types, permettant une gestion efficace des données complexes récupérées à partir de plusieurs tables, éliminant les limitations imposées par les types anonymes dans les requêtes LINQ to SQL.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal