다음을 통해 공유


RelationalQueryableExtensions.FromSqlRaw<TEntity> 메서드

정의

원시 SQL 쿼리를 기반으로 LINQ 쿼리를 만듭니다.

public static System.Linq.IQueryable<TEntity> FromSqlRaw<TEntity> (this Microsoft.EntityFrameworkCore.DbSet<TEntity> source, string sql, params object[] parameters) where TEntity : class;
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)

형식 매개 변수

TEntity

source 요소의 형식입니다.

매개 변수

source
DbSet<TEntity>

IQueryable<T> 원시 SQL 쿼리의 기반으로 사용할 입니다(일반적으로 )DbSet<TEntity>.

sql
String

원시 SQL 쿼리입니다.

parameters
Object[]

매개 변수에 할당할 값입니다.

반환

IQueryable<TEntity>

IQueryable<T> 원시 SQL 쿼리를 나타내는 입니다.

설명

데이터베이스 공급자가 제공된 SQL에서 작성을 지원하는 경우 LINQ 연산 context.Blogs.FromSqlRaw("SELECT * FROM Blogs").OrderBy(b => b.Name)자를 사용하여 원시 SQL 쿼리를 기반으로 작성할 수 있습니다.

SQL을 허용하는 모든 API와 마찬가지로 SQL 삽입 공격으로부터 보호하기 위해 사용자 입력을 매개 변수화하는 것이 중요합니다. SQL 쿼리 문자열에 매개 변수 자리 표시자를 포함하고 매개 변수 값을 추가 인수로 제공할 수 있습니다. 제공하는 매개 변수 값은 모두 DbParameter로 자동 변환됩니다.

그러나 유효성이 검사 되지 않은 사용자 제공 값이 있는 연결되거나 보간된 문자열($"")을 이 메서드에 전달하지 않습니다. 이렇게 하면 애플리케이션이 SQL 삽입 공격에 노출 될 수 있습니다. 보간된 문자열 구문을 사용하려면 를 사용하여 FromSql<TEntity>(DbSet<TEntity>, FormattableString) 매개 변수를 만드는 것이 좋습니다.

또한 이 오버로드는 인스턴스를 DbParameter 매개 변수 값으로 허용합니다. 위(){0}와 같이 위치 자리 표시자를 사용하는 것 외에도 SQL 쿼리 문자열에서 명명된 자리 표시자를 직접 사용할 수도 있습니다.

자세한 내용 과 예제는 EF Core를 사용하여 원시 SQL 명령 실행을 참조하세요.

적용 대상