Share via


RelationalQueryableExtensions.FromSqlRaw<TEntity> Metode

Definisi

Membuat kueri LINQ berdasarkan kueri SQL mentah.

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)

Jenis parameter

TEntity

Jenis elemen source.

Parameter

source
DbSet<TEntity>

IQueryable<T> untuk digunakan sebagai dasar kueri SQL mentah (biasanya ).DbSet<TEntity>

sql
String

Kueri SQL mentah.

parameters
Object[]

Nilai yang akan ditetapkan ke parameter.

Mengembalikan

IQueryable<TEntity>

Mewakili IQueryable<T> kueri SQL mentah.

Keterangan

Jika penyedia database mendukung pembuatan pada SQL yang disediakan, Anda dapat menyusun di atas kueri SQL mentah menggunakan operator LINQ: context.Blogs.FromSqlRaw("SELECT * FROM Blogs").OrderBy(b => b.Name).

Seperti halnya API apa pun yang menerima SQL, penting untuk membuat parameter input pengguna apa pun untuk melindungi dari serangan injeksi SQL. Anda dapat menyertakan tempat penampung parameter dalam string kueri SQL lalu menyediakan nilai parameter sebagai argumen tambahan. Nilai parameter apa pun yang Anda berikan akan secara otomatis dikonversi menjadi DbParameter.

Namun, jangan pernah meneruskan string yang digabungkan atau diinterpolasi ($"") dengan nilai yang disediakan pengguna yang tidak divalidasi ke dalam metode ini. Melakukannya dapat mengekspos aplikasi Anda ke serangan injeksi SQL. Untuk menggunakan sintaks string terinterpolasi, pertimbangkan untuk menggunakan FromSql<TEntity>(DbSet<TEntity>, FormattableString) untuk membuat parameter.

Kelebihan beban ini juga menerima instans DbParameter sebagai nilai parameter. Selain menggunakan tempat penampung posisi seperti di atas ({0}), Anda juga dapat menggunakan tempat penampung bernama langsung dalam string kueri SQL.

Lihat Menjalankan perintah SQL mentah dengan EF Core untuk informasi dan contoh selengkapnya.

Berlaku untuk