Maison >développement back-end >C++ >Comment puis-je exécuter des requêtes SQL brutes avec des mappages de résultats personnalisés dans Entity Framework Core ?

Comment puis-je exécuter des requêtes SQL brutes avec des mappages de résultats personnalisés dans Entity Framework Core ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2025-01-27 00:56:12397parcourir

How Can I Execute Raw SQL Queries with Custom Result Mappings in Entity Framework Core?

Exécution des requêtes SQL brutes et mappage de résultats personnalisés dans l'entité Framework Core

Présentation

L'évolution de Core Framework de l'entité a modifié la façon dont les requêtes SQL brutes avec des mappages de résultats personnalisés sont gérés. Cet article relève des défis de la récupération des données, en particulier lors de la combinaison des données de la table avec les résultats des requêtes de recherche en texte complet, en se concentrant sur les solutions pour diverses versions EF Core.

EF Core 8 et plus tard

EF Core 8 et les versions suivantes simplifient ce processus. La méthode SqlQuery prend désormais directement en charge directement les types arbitraires. Cela permet d'utiliser des types d'entités sans clé et des classes personnalisées pour cartographier les résultats de la requête.

EF Core 3.0 et Types d'entités sans clé

Pour EF Core 3.0, les types d'entités sans clé fournissent une solution propre. Définissez une classe sans clé primaire en utilisant l'attribut [Keyless] ou en appelant HasNoKey().

<code class="language-csharp">[Keyless]
public class SomeModel { ... }

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    modelBuilder.Entity<SomeModel>().HasNoKey();
}</code>

Exécutez votre requête en utilisant FromSqlRaw ou FromSql:

<code class="language-csharp">var result = context.SomeModels.FromSqlRaw("YOUR SQL SCRIPT").ToList();</code>

EF Core 2.1 et Types de requête

EF Core 2.1 Types de requête introduits, offrant une approche structurée pour cartographier les classes personnalisées. Ajoutez une propriété DbQuery<T> à votre DbContext et utilisez FromSql:

<code class="language-csharp">public DbQuery<SomeModel> SomeModels { get; set; }

var result = context.SomeModels.FromSql("YOUR SQL SCRIPT").ToList();</code>

Résumé

Ces méthodes répondent efficacement à la nécessité de mappage de résultats personnalisés lors de l'exécution des requêtes SQL brutes dans le noyau de Framework Entity, permettant une récupération flexible de données, y compris des scénarios impliquant des résultats de recherche en texte complet et des ensembles de données combinés. Choisissez l'approche qui convient le mieux à votre version EF Core. N'oubliez pas de remplacer "YOUR SQL SCRIPT" par votre requête SQL réelle.

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:
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