Maison > développement back-end > C++ > Comment exécuter des requêtes SQL brutes avec des types de données personnalisés dans Entity Framework Core ?

Comment exécuter des requêtes SQL brutes avec des types de données personnalisés dans Entity Framework Core ?

Barbara Streisand
Libérer: 2025-01-27 01:16:09
original
626 Les gens l'ont consulté

How to Execute Raw SQL Queries with Custom Data Types in Entity Framework Core?

Exécution des requêtes SQL brutes avec des types de données personnalisés dans l'entité Framework Core

Entité Framework L'évolution de Core a modifié la façon dont les requêtes SQL brutes sont gérées, en particulier concernant les types de données personnalisés. La méthode dbData.Database.SqlQuery<somemodel> n'est plus disponible dans les versions récentes. Ce guide détaille comment exécuter les requêtes SQL brutes renvoyant des types personnalisés dans diverses versions EF Core.

EF Core 8 et plus tard

EF Core 8 et les versions suivantes améliorent considérablement la méthode SqlQuery, soutenant directement le retour des types arbitraires. Cela simplifie considérablement le processus.

EF Core 3.0 et plus tard

Tirant des types d'entités sans clé:

L'approche recommandée pour gérer les types de données personnalisés dans les requêtes SQL brutes dans EF Core 3.0 et plus tard consiste à utiliser des types d'entités sans clé. Ceci est réalisé en utilisant l'attribut [Keyless] ou la méthode de configuration .HasNoKey().

<code class="language-csharp">[Keyless]
public class SomeModel
{
    // Properties
}</code>
Copier après la connexion

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

<code class="language-csharp">var result = context.SomeModels.FromSqlRaw("SQL_SCRIPT").ToList();
var result = await context.SomeModels.FromSql("SQL_SCRIPT").ToListAsync();</code>
Copier après la connexion

EF Core 2.1 (RC1)

en utilisant dbQuery :

Dans EF Core 2.1 RC1, définissez une propriété DbQuery<T> dans votre DbContext et utilisez la méthode FromSql:

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

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

// Execute query
var result = context.SomeModels.FromSql("SQL_SCRIPT").ToList();</code>
Copier après la connexion

EF Core 2.0

Stratégies alternatives:

EF Core 2.0 nécessite des solutions de contournement:

  • DTOS personnalisés: Créer des objets de transfert de données (DTO) dédiés pour cartographier les résultats de la requête. Cela nécessite la cartographie manuelle des données.
  • sqlcommand: Utiliser directement SqlCommand. Cela contourne les fonctionnalités d'EF Core, réduisant ses avantages.

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