RelationalQueryableExtensions Sınıf
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
LINQ sorguları için ilişkisel veritabanına özgü uzantı yöntemleri.
public static class RelationalQueryableExtensions
type RelationalQueryableExtensions = class
Public Module RelationalQueryableExtensions
- Devralma
-
RelationalQueryableExtensions
Yöntemler
| AsSingleQuery<TEntity>(IQueryable<TEntity>) |
Sorgu sonuçlarında koleksiyonları tek bir veritabanı sorgusuyla yüklemek için yapılandırılmış yeni bir sorgu döndürür. Bu davranış genellikle eşzamanlı güncelleştirmeler karşısında sonuç tutarlılığını garantiler (ancak ayrıntılar kullanılan veritabanına ve işlem yalıtımı düzeyine göre değişebilir). Ancak bu, sorgu birden çok ilgili koleksiyon yüklerken performans sorunlarına neden olabilir. Sorgular için varsayılan sorgu bölme davranışı tarafından UseQuerySplittingBehavior(QuerySplittingBehavior) denetlenebilirsiniz. |
| AsSplitQuery<TEntity>(IQueryable<TEntity>) |
Ayrı veritabanı sorguları aracılığıyla sorgu sonuçlarına koleksiyon yüklemek için yapılandırılmış yeni bir sorgu döndürür. Bu davranış, sorgu birden çok koleksiyon yüklerken performansı önemli ölçüde geliştirebilir. Ancak, ayrı sorgular kullanılırken bu durum eşzamanlı güncelleştirmeler oluştuğunda tutarsız sonuçlara neden olabilir. Seri hale getirilebilir veya anlık görüntü işlemleri bunu azaltmak ve bölünmüş sorgularla tutarlılık elde etmek için kullanılabilir, ancak bu başka performans maliyetleri ve davranış farkı getirebilir. Sorgular için varsayılan sorgu bölme davranışı tarafından UseQuerySplittingBehavior(QuerySplittingBehavior) denetlenebilirsiniz. |
| CreateDbCommand(IQueryable) |
Bu DbCommand sorguyu yürütmek için bir ayar oluşturur. Bu yalnızca genellikle sorgular tarafından oluşturulan sorgular tarafından Entity Framework Core. Uyarı: Bu komutun doğrudan yürütülmesinin, komutu yürüten kullanıcıyla aynı davranışa EF Core garanti edilemez. DbCommand'in bir nesne olduğunu IDisposable unutmayın. Çağıran, döndürülen komutun elden döndürülerek sorumludur. Bu yalnızca genellikle sorgular tarafından oluşturulan sorgular tarafından Entity Framework Core. |
| FromSql<TEntity>(IQueryable<TEntity>, FormattableString) |
Kullanımdan kalktı.
Bir linq sorgusunu temsil eden irdelenmiş dizeyi temel alan bir LINQ SQL oluşturur.
Veritabanı sağlayıcısı sağlanan veri SQL destekliyorsa LINQ işleçlerini kullanarak ham SQL üzerinde oluşturabilirsiniz -
Api'lerde olduğu gibi SQL ekleme saldırısına karşı korumak için tüm kullanıcı girişlerini parametre SQL önemlidir. İlişkili parametre yer tutucularını sorgu dizesinde SQL ebilirsiniz. İlişkili olarak temin edersiniz tüm parametre değerleri otomatik olarak DbParameter'a dönüştürülür - |
| FromSql<TEntity>(IQueryable<TEntity>, RawSqlString, Object[]) |
Kullanımdan kalktı.
Ham bir sorguyu temel alan bir LINQ SQL oluşturur.
Veritabanı sağlayıcısı sağlanan veri SQL destekliyorsa LINQ işleçlerini kullanarak ham SQL üzerinde oluşturabilirsiniz -
Api'lerde olduğu gibi SQL ekleme saldırısına karşı korumak için tüm kullanıcı girişlerini parametre SQL önemlidir. Parametre yer tutucularını sorgu dizesinde SQL ve ardından parametre değerlerini ek bağımsız değişkenler olarak belirtebilirsiniz. Temin edersiniz tüm parametre değerleri otomatik olarak DbParameter'a dönüştürülür -
Bu aşırı yükleme dbParameter örneklerini parametre değerleri olarak da kabul eder. Bu, sorgu dizesinde adlandırılmış parametreleri SQL sağlar - |
| FromSql<TEntity>(IQueryable<TEntity>, String, Object[]) |
Ham bir sorguyu temel alan bir LINQ SQL oluşturur.
Veritabanı sağlayıcısı sağlanan veri SQL destekliyorsa LINQ işleçlerini kullanarak ham SQL üzerinde oluşturabilirsiniz -
Api'lerde olduğu gibi SQL ekleme saldırısına karşı korumak için tüm kullanıcı girişlerini parametre SQL önemlidir. Parametre yer tutucularını sorgu dizesinde SQL ve ardından parametre değerlerini ek bağımsız değişkenler olarak belirtebilirsiniz. Temin edersiniz tüm parametre değerleri otomatik olarak DbParameter'a dönüştürülür -
Ayrıca bir DbParameter oluşturun ve parametre değeri olarak bunu s belirtin. Bu, sorgu dizesinde adlandırılmış parametreleri SQL sağlar - |
| FromSqlInterpolated<TEntity>(DbSet<TEntity>, FormattableString) |
Bir linq sorgusunu temsil eden irdelenmiş dizeyi temel alan bir LINQ SQL oluşturur. Veritabanı sağlayıcısı, sağlanan veri SQL destekliyorsa LINQ işleçlerini kullanarak ham SQL sorgunun üzerinde oluşturabilirsiniz: context.Blogs.FromSqlInterpolated($"SELECT * FROM Blogs").OrderBy(b => b.Name)
Api'lerde olduğu gibi SQL ekleme saldırısına karşı korumak için tüm kullanıcı girişlerini parametre SQL önemlidir. İlişkili parametre yer tutucularını sorgu dizesinde SQL ebilirsiniz. İlişkili olarak temin edersiniz tüm parametre değerleri otomatik olarak bir değerine DbParameter dönüştürülür: context.Blogs.FromSqlInterpolated($"SELECT * FROM Blogs WHERE Name = {userSuppliedSearchTerm}")
|
| FromSqlRaw<TEntity>(DbSet<TEntity>, String, Object[]) |
Ham bir sorguyu temel alan bir LINQ SQL oluşturur.
Veritabanı sağlayıcısı, sağlanan veri SQL destekliyorsa LINQ işleçleri: bağlamını kullanarak ham SQL sorgunun üzerinde Api'lerde olduğu gibi SQL ekleme saldırısına karşı korumak için tüm kullanıcı girişlerini parametre SQL önemlidir. Parametre yer tutucularını sorgu dizesinde SQL ve ardından parametre değerlerini ek bağımsız değişkenler olarak belirtebilirsiniz. Temin edersiniz tüm parametre değerleri otomatik olarak bir değerine DbParameter dönüştürülür: context.Blogs.FromSqlRaw("SELECT * FROM Blogs WHERE Name = {0}", userSuppliedSearchTerm)
Ancak, hiçbir zaman doğrulanmış kullanıcı tarafından sağlanan değerlere sahip bir bir concatenated veya i İ ilişkilendirme dizesi (
Bu aşırı yükleme, örnekleri DbParameter parametre değerleri olarak da kabul eder. Yukarıdaki () gibi konumsal yer tutucuları kullanmaya ek olarak, adlandırılmış yer tutucuları doğrudan sorgu context.Blogs.FromSqlRaw("SELECT * FROM Blogs WHERE Name = @searchTerm", new SqlParameter("@searchTerm", userSuppliedSearchTerm))
|