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!