RelationalDatabaseFacadeExtensions.ExecuteSqlRaw Metoda
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Przeciążenia
ExecuteSqlRaw(DatabaseFacade, String, IEnumerable<Object>) |
Wykonuje daną bazę danych SQL i zwraca liczbę wierszy, których dotyczy problem. |
ExecuteSqlRaw(DatabaseFacade, String, Object[]) |
Wykonuje daną bazę danych SQL i zwraca liczbę wierszy, których dotyczy problem. |
ExecuteSqlRaw(DatabaseFacade, String, IEnumerable<Object>)
Wykonuje daną bazę danych SQL i zwraca liczbę wierszy, których dotyczy problem.
public static int ExecuteSqlRaw (this Microsoft.EntityFrameworkCore.Infrastructure.DatabaseFacade databaseFacade, string sql, System.Collections.Generic.IEnumerable<object> parameters);
public static int ExecuteSqlRaw (this Microsoft.EntityFrameworkCore.Infrastructure.DatabaseFacade databaseFacade, string sql, System.Collections.Generic.IEnumerable<object?> parameters);
static member ExecuteSqlRaw : Microsoft.EntityFrameworkCore.Infrastructure.DatabaseFacade * string * seq<obj> -> int
<Extension()>
Public Function ExecuteSqlRaw (databaseFacade As DatabaseFacade, sql As String, parameters As IEnumerable(Of Object)) As Integer
Parametry
- databaseFacade
- DatabaseFacade
Element DatabaseFacade dla kontekstu.
- sql
- String
Sql do wykonania.
- parameters
- IEnumerable<Object>
Parametry do użycia z bazą danych SQL.
Zwraca
Liczba wierszy, których dotyczy problem.
Uwagi
Należy pamiętać, że ta metoda nie uruchamia transakcji. Aby użyć tej metody z transakcją, pierwsze wywołanie BeginTransaction(DatabaseFacade, IsolationLevel) lub UseTransaction.
Należy pamiętać, że bieżący ExecutionStrategy element nie jest używany przez tę metodę, ponieważ program SQL może nie być idempotentny i nie jest uruchamiany w transakcji. Można ExecutionStrategy go użyć jawnie, upewniając się, że używasz również transakcji, jeśli sql nie jest idempotentny.
Podobnie jak w przypadku każdego interfejsu API, który akceptuje język SQL, ważne jest, aby sparametryzować wszelkie dane wejściowe użytkownika w celu ochrony przed atakiem polegającym na wstrzyknięciu kodu SQL. W ciągu zapytania SQL można uwzględnić symbole zastępcze parametrów, a następnie podać wartości parametrów jako dodatkowe argumenty. Wszystkie podane wartości parametrów zostaną automatycznie przekonwertowane na parametr DbParameter.
Jednak nigdy nie należy przekazywać połączonych ani interpolowanych ciągów ($""
) z nieweryfikowanymi wartościami dostarczonymi przez użytkownika do tej metody. Może to spowodować ujawnienie aplikacji ataków polegających na wstrzyknięciu kodu SQL. Aby użyć składni ciągu interpolowanego, rozważ użycie metody ExecuteSql(DatabaseFacade, FormattableString) do utworzenia parametrów.
Aby uzyskać więcej informacji i przykłady, zobacz Wykonywanie nieprzetworzonych poleceń SQL za pomocą programu EF Core .
Dotyczy
ExecuteSqlRaw(DatabaseFacade, String, Object[])
Wykonuje daną bazę danych SQL i zwraca liczbę wierszy, których dotyczy problem.
public static int ExecuteSqlRaw (this Microsoft.EntityFrameworkCore.Infrastructure.DatabaseFacade databaseFacade, string sql, params object[] parameters);
public static int ExecuteSqlRaw (this Microsoft.EntityFrameworkCore.Infrastructure.DatabaseFacade databaseFacade, string sql, params object?[] parameters);
static member ExecuteSqlRaw : Microsoft.EntityFrameworkCore.Infrastructure.DatabaseFacade * string * obj[] -> int
<Extension()>
Public Function ExecuteSqlRaw (databaseFacade As DatabaseFacade, sql As String, ParamArray parameters As Object()) As Integer
Parametry
- databaseFacade
- DatabaseFacade
Element DatabaseFacade dla kontekstu.
- sql
- String
Sql do wykonania.
- parameters
- Object[]
Parametry do użycia z bazą danych SQL.
Zwraca
Liczba wierszy, których dotyczy problem.
Uwagi
Należy pamiętać, że ta metoda nie uruchamia transakcji. Aby użyć tej metody z transakcją, pierwsze wywołanie BeginTransaction(DatabaseFacade, IsolationLevel) lub UseTransaction.
Należy pamiętać, że bieżący ExecutionStrategy element nie jest używany przez tę metodę, ponieważ program SQL może nie być idempotentny i nie jest uruchamiany w transakcji. Można ExecutionStrategy go użyć jawnie, upewniając się, że używasz również transakcji, jeśli sql nie jest idempotentny.
Podobnie jak w przypadku każdego interfejsu API, który akceptuje język SQL, ważne jest, aby sparametryzować wszelkie dane wejściowe użytkownika w celu ochrony przed atakiem polegającym na wstrzyknięciu kodu SQL. W ciągu zapytania SQL można uwzględnić symbole zastępcze parametrów, a następnie podać wartości parametrów jako dodatkowe argumenty. Wszystkie podane wartości parametrów zostaną automatycznie przekonwertowane na parametr DbParameter.
Jednak nigdy nie należy przekazywać połączonych ani interpolowanych ciągów ($""
) z nieweryfikowanymi wartościami dostarczonymi przez użytkownika do tej metody. Może to spowodować ujawnienie aplikacji ataków polegających na wstrzyknięciu kodu SQL. Aby użyć składni ciągu interpolowanego, rozważ użycie metody ExecuteSql(DatabaseFacade, FormattableString) do utworzenia parametrów.
Aby uzyskać więcej informacji i przykłady, zobacz Wykonywanie nieprzetworzonych poleceń SQL za pomocą programu EF Core .