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 les versions suivantes améliorent considérablement la méthode SqlQuery
, soutenant directement le retour des types arbitraires. Cela simplifie considérablement le processus.
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>
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>
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>
Stratégies alternatives:
EF Core 2.0 nécessite des solutions de contournement:
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!