Übersicht
Die Weiterentwicklung von Entity Framework Core hat die Art und Weise verändert, wie unformatierte SQL-Abfragen mit benutzerdefinierten Ergebniszuordnungen gehandhabt werden. Dieser Artikel befasst sich mit den Herausforderungen beim Abrufen von Daten, insbesondere beim Kombinieren von Tabellendaten mit Ergebnissen aus Volltextsuchabfragen, und konzentriert sich auf Lösungen für verschiedene EF Core-Versionen.
EF Core 8 und höher
EF Core 8 und nachfolgende Versionen vereinfachen diesen Prozess. Die Methode SqlQuery
unterstützt jetzt direkt die Rückgabe beliebiger Typen. Dies ermöglicht die Verwendung von schlüssellosen Entitätstypen und benutzerdefinierten Klassen zum Zuordnen von Abfrageergebnissen.
EF Core 3.0 und Keyless-Entitätstypen
Für EF Core 3.0 bieten schlüssellose Entitätstypen eine saubere Lösung. Definieren Sie eine Klasse ohne Primärschlüssel mit dem Attribut [Keyless]
oder durch Aufruf von HasNoKey()
.
<code class="language-csharp">[Keyless] public class SomeModel { ... } protected override void OnModelCreating(ModelBuilder modelBuilder) { modelBuilder.Entity<SomeModel>().HasNoKey(); }</code>
Führen Sie Ihre Abfrage mit FromSqlRaw
oder FromSql
aus:
<code class="language-csharp">var result = context.SomeModels.FromSqlRaw("YOUR SQL SCRIPT").ToList();</code>
EF Core 2.1 und Abfragetypen
EF Core 2.1 führte Abfragetypen ein und bietet einen strukturierten Ansatz für die Zuordnung benutzerdefinierter Klassen. Fügen Sie eine DbQuery<T>
-Eigenschaft zu Ihrem DbContext
hinzu und verwenden Sie FromSql
:
<code class="language-csharp">public DbQuery<SomeModel> SomeModels { get; set; } var result = context.SomeModels.FromSql("YOUR SQL SCRIPT").ToList();</code>
Zusammenfassung
Diese Methoden erfüllen effektiv die Notwendigkeit einer benutzerdefinierten Ergebniszuordnung bei der Ausführung von Roh-SQL-Abfragen in Entity Framework Core und ermöglichen einen flexiblen Datenabruf, einschließlich Szenarien mit Volltextsuchergebnissen und kombinierten Datensätzen. Wählen Sie den Ansatz, der am besten zu Ihrer EF Core-Version passt. Denken Sie daran, "YOUR SQL SCRIPT"
durch Ihre tatsächliche SQL-Abfrage zu ersetzen.
Das obige ist der detaillierte Inhalt vonWie kann ich Roh-SQL-Abfragen mit benutzerdefinierten Ergebniszuordnungen in Entity Framework Core ausführen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!