Heim > Backend-Entwicklung > C++ > Wie führe ich rohe SQL-Abfragen mit benutzerdefinierten Datentypen in Entity Framework Core aus?

Wie führe ich rohe SQL-Abfragen mit benutzerdefinierten Datentypen in Entity Framework Core aus?

Barbara Streisand
Freigeben: 2025-01-27 01:16:09
Original
620 Leute haben es durchsucht

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

Ausführen von Roh-SQL-Abfragen mit benutzerdefinierten Datentypen in Entity Framework Core

Die Weiterentwicklung von Entity Framework Core hat die Art und Weise verändert, wie unformatierte SQL-Abfragen gehandhabt werden, insbesondere in Bezug auf benutzerdefinierte Datentypen. Die Methode dbData.Database.SqlQuery<somemodel> ist in neueren Versionen nicht mehr verfügbar. In dieser Anleitung wird detailliert beschrieben, wie Sie unformatierte SQL-Abfragen ausführen, die benutzerdefinierte Typen in verschiedenen EF Core-Versionen zurückgeben.

EF Core 8 und höher

EF Core 8 und nachfolgende Versionen verbessern die SqlQuery-Methode erheblich und unterstützen direkt die Rückgabe beliebiger Typen. Dies vereinfacht den Prozess erheblich.

EF Core 3.0 und höher

Nutzung schlüsselloser Entitätstypen:

Der empfohlene Ansatz für die Handhabung benutzerdefinierter Datentypen in unformatierten SQL-Abfragen in EF Core 3.0 und höher ist die Verwendung schlüsselloser Entitätstypen. Dies wird mithilfe des [Keyless]-Attributs oder der .HasNoKey()-Konfigurationsmethode erreicht.

<code class="language-csharp">[Keyless]
public class SomeModel
{
    // Properties
}</code>
Nach dem Login kopieren

Führen Sie Ihre Abfrage entweder mit FromSqlRaw oder FromSql aus:

<code class="language-csharp">var result = context.SomeModels.FromSqlRaw("SQL_SCRIPT").ToList();
var result = await context.SomeModels.FromSql("SQL_SCRIPT").ToListAsync();</code>
Nach dem Login kopieren

EF Core 2.1 (RC1)

Verwendung von DbQuery:

Definieren Sie in EF Core 2.1 RC1 eine DbQuery<T>-Eigenschaft in Ihrem DbContext und verwenden Sie die FromSql-Methode:

<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>
Nach dem Login kopieren

EF Core 2.0

Alternative Strategien:

EF Core 2.0 erfordert Problemumgehungen:

  • Benutzerdefinierte DTOs: Erstellen Sie dedizierte Data Transfer Objects (DTOs), um Abfrageergebnisse abzubilden. Dies erfordert eine manuelle Zuordnung der Daten.
  • SqlCommand: SqlCommand direkt verwenden. Dadurch werden die Funktionen von EF Core umgangen und seine Vorteile verringert.

Das obige ist der detaillierte Inhalt vonWie führe ich rohe SQL-Abfragen mit benutzerdefinierten Datentypen in Entity Framework Core aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage