RelationalDatabaseFacadeExtensions.ExecuteSqlRaw Metoda

Definicja

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);
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);
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 .

Dotyczy