RelationalQueryableExtensions.FromSqlRaw<TEntity> Methode

Definition

Erstellt eine LINQ-Abfrage basierend auf einer unformatierten SQL-Abfrage.

public static System.Linq.IQueryable<TEntity> FromSqlRaw<TEntity> (this Microsoft.EntityFrameworkCore.DbSet<TEntity> source, string sql, params object[] parameters) where TEntity : class;
static member FromSqlRaw : Microsoft.EntityFrameworkCore.DbSet<'Entity (requires 'Entity : null)> * string * obj[] -> System.Linq.IQueryable<'Entity (requires 'Entity : null)> (requires 'Entity : null)
<Extension()>
Public Function FromSqlRaw(Of TEntity As Class) (source As DbSet(Of TEntity), sql As String, ParamArray parameters As Object()) As IQueryable(Of TEntity)

Typparameter

TEntity

Der Typ der Elemente von source.

Parameter

source
DbSet<TEntity>

Ein IQueryable<T> , der als Basis der unformatierten SQL-Abfrage verwendet werden soll (in der Regel ).DbSet<TEntity>

sql
String

Die unformatierte SQL-Abfrage.

parameters
Object[]

Die Werte, die Parametern zugewiesen werden sollen.

Gibt zurück

IQueryable<TEntity>

Ein IQueryable<T> , der die unformatierte SQL-Abfrage darstellt.

Hinweise

Wenn der Datenbankanbieter das Komponieren für die angegebene SQL unterstützt, können Sie mithilfe von LINQ-Operatoren auf der Grundlage der SQL-Rohabfrage erstellen: context.Blogs.FromSqlRaw("SELECT * FROM Blogs").OrderBy(b => b.Name).

Wie bei jeder API, die SQL akzeptiert, ist es wichtig, alle Benutzereingaben zu parametrisieren, um sich vor einem SQL-Einschleusungsangriff zu schützen. Sie können Parameterplatzhalter in die SQL-Abfragezeichenfolge einschließen und dann Parameterwerte als zusätzliche Argumente angeben. Sämtliche von Ihnen bereitgestellte Parameterwerte 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 angriffen durch SQL-Einschleusung aussetzen. Um die interpolierte Zeichenfolgensyntax zu verwenden, sollten Sie verwenden FromSql<TEntity>(DbSet<TEntity>, FormattableString) , um Parameter zu erstellen.

Diese Überladung akzeptiert DbParameter auch Instanzen als Parameterwerte. Zusätzlich zur Verwendung von Positionsplatzhaltern wie oben ({0}) können Sie benannte Platzhalter auch direkt in der SQL-Abfragezeichenfolge verwenden.

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

Gilt für: