Maison >développement back-end >C++ >Pourquoi mon linq to entités requête-t-il 'L'entité ne peut pas être construite dans une requête LINQ à entités'?
Lors de l'utilisation du cadre d'entité, assurez-vous de vérifier les anomalies qui peuvent se produire pendant le processus d'exécution. Une erreur courante est "Construire des entités dans la requête LINQ vers les entités", cette erreur se produit lors de la tenue de projeter le résultat de la requête aux entités périphériques.
La raison de l'erreur
dans un fragment de code donné, requête:
Essayez de projeter les résultats de la requête sur une nouvelle instance de l'entité du produit. Cependant, dans la requête LINQ à entités, l'entité ne peut pas être construite ou reconstruite, car l'objet de l'objet est géré par ORM.
<code class="language-csharp">from p in db.Products where p.CategoryID == categoryID select new Product { Name = p.Name };</code>Solution: Utilisez un type anonyme ou DTO
Afin de surmonter cette erreur et d'effectuer une option personnalisée, vous pouvez utiliser un type anonyme ou un objet de transmission de données (DTO). Le type anonyme est un type de dénomination temporaire qui peut enregistrer un ensemble d'attributs, tandis que DTO est une classe personnalisée qui indique un objet de domaine spécifique. Créer dto
Dans cet exemple, comme vous n'avez besoin que de l'attribut de nom, vous pouvez créer du DTO de la manière suivante:
Modifier l'enquête à projeter sur DTO
Avec le DTO, vous pouvez désormais modifier l'enquête pour le projeter sur le DTO:
<code class="language-csharp">public class ProductDTO { public string Name { get; set; } }</code>
Grâce à la projection du DTO, vous pouvez récupérer avec succès les données et éviter "l'erreur" Construire l'entité dans LINQ à l'enquête des entités ".
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!