Sprache

RelationalDatabaseFacadeExtensions.SqlQueryRaw<TResult> Methode

Definition

Erstellt eine LINQ-Abfrage basierend auf einer rohen SQL-Abfrage, die einen Resultset eines skalaren Typs zurückgibt, der vom Datenbankanbieter nativ unterstützt wird.

public static System.Linq.IQueryable<TResult> SqlQueryRaw<TResult>(this Microsoft.EntityFrameworkCore.Infrastructure.DatabaseFacade databaseFacade, string sql, params object[] parameters);
public static System.Linq.IQueryable<TResult> SqlQueryRaw<TResult>(this Microsoft.EntityFrameworkCore.Infrastructure.DatabaseFacade databaseFacade, string sql, params object?[] parameters);
static member SqlQueryRaw : Microsoft.EntityFrameworkCore.Infrastructure.DatabaseFacade * string * obj[] -> System.Linq.IQueryable<'Result>
<Extension()>
Public Function SqlQueryRaw(Of TResult) (databaseFacade As DatabaseFacade, sql As String, ParamArray parameters As Object()) As IQueryable(Of TResult)

Typparameter

TResult

Parameter

databaseFacade
DatabaseFacade

Der DatabaseFacade für den Kontext.

sql
String

Die rohe SQL-Abfrage.

parameters
Object[]

Die Werte, die Parametern zugewiesen werden sollen.

Gibt zurück

IQueryable<TResult>

Eine IQueryable<T> Darstellung der rohen SQL-Abfrage.

Hinweise

Wenn Sie diese Methode mit einem Rückgabetyp verwenden möchten, der vom Datenbankanbieter nicht nativ unterstützt wird, verwenden Sie die DefaultTypeMapping<TScalar>(Action<TypeMappingConfigurationBuilder<TScalar>>) Methode.

Die zurückgegebene IQueryable<T> Kann mithilfe von LINQ erstellt werden, um komplexere Abfragen zu erstellen.

Beachten Sie, dass diese Methode keine Transaktion startet. Um diese Methode mit einer Transaktion zu verwenden, rufen Sie zuerst auf BeginTransaction(DatabaseFacade, IsolationLevel) oder UseTransaction.

Wie bei jeder API, die SQL akzeptiert, ist es wichtig, jede Benutzereingabe zu parametrisieren, um vor einem SQL-Einfügungsangriff zu schützen. Sie können Parameterplatzhalter in die SQL-Abfragezeichenfolge einschließen und dann Parameterwerte als zusätzliche Argumente angeben. Alle parameterwerte, die Sie angeben, werden automatisch in einen DbParameter konvertiert.

Übergeben Sie jedoch niemals eine verkettete oder interpolierte Zeichenfolge ($"") mit nicht überprüften vom Benutzer bereitgestellten Werten an diese Methode. Dies kann Ihre Anwendung für SQL-Einfüfungsangriffe verfügbar machen. Wenn Sie die interpolierte Zeichenfolgensyntax verwenden möchten, sollten Sie SqlQuery<TResult>(DatabaseFacade, FormattableString) parameter erstellen.

Weitere Informationen und Beispiele finden Sie unter Ausführen von unformatierten SQL-Befehlen mit EF Core .

Gilt für: