DatabaseFacade Sınıf

Tanım

Bir bağlam için veritabanıyla ilgili bilgilere ve işlemlere erişim sağlar. Bu sınıfın örnekleri genellikle 'den elde Database edilir ve doğrudan uygulama kodunda tasarlanmaz.

public class DatabaseFacade : Microsoft.EntityFrameworkCore.Infrastructure.IInfrastructure<IServiceProvider>
public class DatabaseFacade : Microsoft.EntityFrameworkCore.Infrastructure.IInfrastructure<IServiceProvider>, Microsoft.EntityFrameworkCore.Internal.IDatabaseFacadeDependenciesAccessor
public class DatabaseFacade : Microsoft.EntityFrameworkCore.Infrastructure.IInfrastructure<IServiceProvider>, Microsoft.EntityFrameworkCore.Storage.IDatabaseFacadeDependenciesAccessor
public class DatabaseFacade : Microsoft.EntityFrameworkCore.Infrastructure.IInfrastructure<IServiceProvider>, Microsoft.EntityFrameworkCore.Infrastructure.IResettableService, Microsoft.EntityFrameworkCore.Storage.IDatabaseFacadeDependenciesAccessor
type DatabaseFacade = class
    interface IInfrastructure<IServiceProvider>
type DatabaseFacade = class
    interface IInfrastructure<IServiceProvider>
    interface IDatabaseFacadeDependenciesAccessor
type DatabaseFacade = class
    interface IInfrastructure<IServiceProvider>
    interface IDatabaseFacadeDependenciesAccessor
    interface IResettableService
Public Class DatabaseFacade
Implements IInfrastructure(Of IServiceProvider)
Public Class DatabaseFacade
Implements IDatabaseFacadeDependenciesAccessor, IInfrastructure(Of IServiceProvider)
Public Class DatabaseFacade
Implements IDatabaseFacadeDependenciesAccessor, IInfrastructure(Of IServiceProvider), IResettableService
Devralma
DatabaseFacade
Uygulamalar
IInfrastructure<IServiceProvider> Microsoft.EntityFrameworkCore.Internal.IDatabaseFacadeDependenciesAccessor IDatabaseFacadeDependenciesAccessor IResettableService

Oluşturucular

DatabaseFacade(DbContext)

DatabaseFacade sınıfının yeni bir örneğini başlatır. Bu sınıfın örnekleri genellikle 'den elde Database edilir ve doğrudan uygulama kodunda tasarlanmaz.

Özellikler

AutoSavepointsEnabled

bir işlem ile el ile başlatıldıktan sonra çağrılsa tarafından otomatik olarak bir işlem kaydetme SaveChanges() noktası oluşturulıp oluşturulmayacak. BeginTransaction()

Varsayılan değer, true el ile SaveChanges() başlatan bir işlem içinde bir işlem kaydetme noktası oluşturacak anlamına gelir. Bu özellik ne olursa olsun, kaydetme noktaları yalnızca veri sağlayıcısı bunları destekliyorsa oluşturulur; bkz. SupportsSavepoints .

Veritabanı başarısız olursa false bozuk durumda bırakılana kadar bu değerin olarak ayarlandırması yalnızca dikkatli SaveChanges() yapılmalıdır.

AutoTransactionsEnabled

'BeginTransaction' veya 'UseTransaction' yöntemlerinin hiçbiri çağrılmasa tarafından otomatik olarak bir işlem oluşturulıp oluşturulmayacaklarını belirten bir değer alır veya SaveChanges() ayarlar.

Bu değeri olarak false ayarlarsanız, için de devre dışı IExecutionStrategy bırakır SaveChanges()

Varsayılan değer, true değişiklikleri kaydeden SaveChanges() her zaman bir işlem kullanabileceği anlamına gelir.

Veritabanı başarısız olursa false bozuk durumda bırakılana kadar bu değerin olarak ayarlandırması yalnızca dikkatli SaveChanges() yapılmalıdır.

CurrentTransaction

Bağlam tarafından IDbContextTransaction kullanılan geçerli değeri veya kullanılan bir işlem yoksa null değerini alır.

Bu özellik , veya 'den biri BeginTransaction() değilse Microsoft.EntityFrameworkCore.RelationalDatabaseFacadeExtensions.BeginTransaction null olur Microsoft.EntityFrameworkCore.RelationalDatabaseFacadeExtensions.UseTransaction çağrıldı. Geçerli DbConnection veya benzer bir işlem elde etmek için herhangi bir girişimde bulundu.

İlişkisel veritabanları için temel DbTransaction alınanlar kullanılarak elde edilir Microsoft.EntityFrameworkCore.Storage.DbContextTransactionExtensions.GetDbTransaction üzerinde IDbContextTransaction döndürülür.

ProviderName

Şu anda kullanmakta olan veritabanı sağlayıcısının adını döndürür. Ad genellikle sağlayıcı derlemenin adıdır. Genellikle aşağıdaki gibi bir şeker yöntemi kullanmak daha kolaydır: Microsoft.EntityFrameworkCore.SqlServerDatabaseFacadeExtensions.IsSqlServer bu yöntemi doğrudan çağırma yerine.

Bu yöntem yalnızca yapılandırıldığında kullanılabilir çünkü yalnızca DbContext sağlayıcının bilindiği bir yöntemdir. Bu, uygulama kodunun sağlayıcıyı bağlamı yapılandırmanın bir parçası olarak kullanmak üzere ayar kullandığı için bu yöntemin OnConfiguring(DbContextOptionsBuilder) içinde kullanılamay anlamına gelir.

Yöntemler

BeginTransaction()

Yeni bir işlem başlatır.

BeginTransactionAsync(CancellationToken)

Zaman uyumsuz olarak yeni bir işlem başlatır.

CanConnect()

Veritabanının kullanılabilir olup olmadığını ve bağlantı olup olmadığını belirler.

Bağlanmaya çalışılan tüm özel durumlar yakalır ve uygulamaya yayılmaz.

Yapılandırılan bağlantı dizesi, bağlantıyı normal bir şekilde oluşturmak için kullanılır, bu nedenle zaman aşımı gibi yapılandırılmış tüm seçeneklere saygı gösterir.

Veritabanına bağlanabiliyor olmak, şema oluşturma vb. konusunda güncel olduğu anlamına da gelir.

CanConnectAsync(CancellationToken)

Veritabanının kullanılabilir olup olmadığını ve bağlantı olup olmadığını belirler.

Bağlanmaya çalışılan tüm özel durumlar yakalır ve uygulamaya yayılmaz.

Yapılandırılan bağlantı dizesi, bağlantıyı normal bir şekilde oluşturmak için kullanılır, bu nedenle zaman aşımı gibi yapılandırılmış tüm seçeneklere saygı gösterir.

Veritabanına bağlanabiliyor olmak, şema oluşturma vb. konusunda güncel olduğu anlamına da gelir.

CommitTransaction()

Geçerli işlemde bekleyen işlemleri veritabanına uygular.

CommitTransactionAsync(CancellationToken)

Geçerli işlemde bekleyen işlemleri veritabanına uygular.

CreateExecutionStrategy()

Yapılandırılan örneğinin bir örneğini IExecutionStrategy oluşturur.

EnsureCreated()

Bağlamın veritabanının mevcut olduğunu doğrular.

  • Veritabanı varsa ve herhangi bir tablo varsa, herhangi bir işlem alınmaz. Veritabanı şemasının veritabanı modeliyle uyumlu olduğundan emin olmak için Entity Framework yoktur.
  • Veritabanı mevcutsa ancak herhangi bir tablo yoksa, veritabanı Entity Framework oluşturmak için veritabanı modeli kullanılır.
  • Veritabanı yoksa veritabanı oluşturulur ve veritabanı şemasını oluşturmak Entity Framework modeli kullanılır.

Aşağıdaki adımları kullanarak test EnsureCreated() veya EnsureDeleted() prototyping Entity Framework. Bu, testin/prototipin her yürütmesi öncesinde veritabanının temiz durumda olduğunu sağlar. Ancak, veritabanındaki verilerin korunmay olduğunu unutmayın.

Bu API'nin **veritabanını oluşturmak** için geçişleri kullanmaz. Ayrıca, oluşturulan veritabanı daha sonra geçişler kullanılarak güncelleştirilemez. İlişkisel bir veritabanını hedef alıyor ve geçişleri kullanıyorsanız, veritabanının geçişler kullanılarak oluşturula ve tüm geçişlerin uygulandığını Microsoft.EntityFrameworkCore.RelationalDatabaseFacadeExtensions.Migrate sağlamak için kullanabilirsiniz.

EnsureCreatedAsync(CancellationToken)

Bağlamın veritabanının mevcut olduğunu doğrular.

  • Veritabanı varsa ve herhangi bir tablo varsa, herhangi bir işlem alınmaz. Veritabanı şemasının veritabanı modeliyle uyumlu olduğundan emin olmak için Entity Framework yoktur.
  • Veritabanı mevcutsa ancak herhangi bir tablo yoksa, veritabanı Entity Framework oluşturmak için veritabanı modeli kullanılır.
  • Veritabanı yoksa veritabanı oluşturulur ve veritabanı şemasını oluşturmak Entity Framework modeli kullanılır.

Aşağıdaki adımları kullanarak test EnsureCreatedAsync(CancellationToken) veya EnsureDeletedAsync(CancellationToken) prototyping Entity Framework. Bu, testin/prototipin her yürütmesi öncesinde veritabanının temiz durumda olduğunu sağlar. Ancak, veritabanındaki verilerin korunmay olduğunu unutmayın.

Bu API'nin **veritabanını oluşturmak** için geçişleri kullanmaz. Ayrıca, oluşturulan veritabanı daha sonra geçişler kullanılarak güncelleştirilemez. İlişkisel bir veritabanını hedef alıyor ve geçişleri kullanıyorsanız, veritabanının geçişler kullanılarak oluşturula ve tüm geçişlerin uygulandığını Microsoft.EntityFrameworkCore.RelationalDatabaseFacadeExtensions.MigrateAsync sağlamak için kullanabilirsiniz.

EnsureDeleted()

Bağlam için veritabanının mevcut olmadığını sağlar. Yoksa herhangi bir işlem alınmaz. Varsa veritabanı silinir.

Uyarı: Veritabanının tamamı silinir ve yalnızca model tarafından bu bağlam için kullanılan veritabanı nesnelerini kaldırmak için herhangi bir çaba gösterlanmaz.

Aşağıdaki adımları kullanarak test EnsureCreated() veya EnsureDeleted() prototyping Entity Framework. Bu, testin/prototipin her yürütmesi öncesinde veritabanının temiz durumda olduğunu sağlar. Ancak, veritabanındaki verilerin korunmay olduğunu unutmayın.

EnsureDeletedAsync(CancellationToken)

Zaman uyumsuz olarak bağlam için veritabanının mevcut olmadığını sağlar. Yoksa herhangi bir işlem alınmaz. Varsa veritabanı silinir.

Uyarı: Veritabanının tamamı silinir ve yalnızca model tarafından bu bağlam için kullanılan veritabanı nesnelerini kaldırmak için herhangi bir çaba gösterlanmaz.

Aşağıdaki adımları kullanarak test EnsureCreatedAsync(CancellationToken) veya EnsureDeletedAsync(CancellationToken) prototyping Entity Framework. Bu, testin/prototipin her yürütmesi öncesinde veritabanının temiz durumda olduğunu sağlar. Ancak, veritabanındaki verilerin korunmay olduğunu unutmayın.

RollbackTransaction()

Geçerli işlemde bekleyen işlemleri atar.

RollbackTransactionAsync(CancellationToken)

Geçerli işlemde bekleyen işlemleri atar.

Belirtik Arabirim Kullanımları

IDatabaseFacadeDependenciesAccessor.Context

Bu, genel API'lerle aynı uyumluluk standartlarına tabi Entity Framework Core altyapıyı destekleyen bir iç API'dir. Herhangi bir sürümde bildirim olmadan değiştirilebilir veya kaldırılabilir. Bunu yalnızca kodunda son derece dikkatli ve bunun yeni bir sürüme güncelleştirilen uygulama hatalarına neden olacağını bilerek Entity Framework Core gerekir.

IDatabaseFacadeDependenciesAccessor.Dependencies

Bu, genel API'lerle aynı uyumluluk standartlarına tabi Entity Framework Core altyapıyı destekleyen bir iç API'dir. Herhangi bir sürümde bildirim olmadan değiştirilebilir veya kaldırılabilir. Bunu yalnızca kodunda son derece dikkatli ve bunun yeni bir sürüme güncelleştirilen uygulama hatalarına neden olacağını bilerek Entity Framework Core gerekir.

IInfrastructure<IServiceProvider>.Instance

Hizmetleri çözümlemek IServiceProvider için kullanılan kapsamı alır.

Bu özellik, doğrudan genel API yüzeyine açık değil hizmetleri kullanması gereken uzantı yöntemleri tarafından kullanılmak üzere tasarlanmıştır.

IResettableService.ResetState()

Hizmeti havuzdan kullanılabilmesi için sıfırlar.

IResettableService.ResetStateAsync(CancellationToken)

Uzantı Metotları

GetCosmosClient(DatabaseFacade)

Bu için temel CosmosClient alınan DbContext alır.

IsCosmos(DatabaseFacade)

Veritabanı true sağlayıcısının şu anda kullanımda olan veritabanı sağlayıcısının Cosmos döndürür.

Bu yöntem yalnızca yapılandırıldığında kullanılabilir çünkü yalnızca DbContext sağlayıcının bilindiği bir yöntemdir. Bu, uygulama kodunun sağlayıcıyı bağlamı yapılandırmanın bir parçası olarak kullanmak üzere ayar kullandığı için bu yöntemin OnConfiguring(DbContextOptionsBuilder) içinde kullanılamay anlamına gelir.

GetInfrastructure<T>(IInfrastructure<T>)

Kullanılarak gizlenen bir özellikten değeri alır IInfrastructure<T> .

Bu yöntem genellikle veritabanı sağlayıcıları (ve diğer uzantılar) tarafından kullanılır. Genellikle uygulama kodunda kullanılmaz.

IInfrastructure<T> , uygulama kodunda kullanılması amaçlanmayan ancak veritabanı sağlayıcıları tarafından yazılan genişletme yöntemlerinde kullanılabilen özellikleri gizlemek için kullanılır.

IsInMemory(DatabaseFacade)

Kullanılmakta true olan veritabanı sağlayıcısının bellek içi sağlayıcı olup olmadığını döndürür.

Bu yöntem yalnızca DbContext sağlayıcının bilindiğinden, yapılandırıldıktan sonra kullanılabilir. Bu OnConfiguring(DbContextOptionsBuilder) , uygulama kodunun, bağlamı yapılandırmanın bir parçası olarak kullanmak üzere ayarladığı konum olduğundan, bu yöntemin ' de kullanılamaz olduğu anlamına gelir.

BeginTransaction(DatabaseFacade, IsolationLevel)

Verilen bir ile yeni bir işlem IsolationLevel başlatır.

BeginTransactionAsync(DatabaseFacade, IsolationLevel, CancellationToken)

Zaman uyumsuz olarak, verilen bir ile yeni bir işlem IsolationLevel başlatır.

CloseConnection(DatabaseFacade)

Temel alınan 'i DbConnection kapatır.

CloseConnectionAsync(DatabaseFacade)

Temel alınan 'i DbConnection kapatır.

ExecuteSqlCommand(DatabaseFacade, RawSqlString, IEnumerable<Object>)
Kullanımdan kalktı.

Verilen verileri SQL veritabanında yürütür ve etkilenen satır sayısını döndürür.

Bu yöntemin bir işlem başlatmaz. Bu yöntemi bir işlemle kullanmak için önce veya BeginTransaction(DatabaseFacade, IsolationLevel) çağrısında bulundurarak. UseTransaction(DatabaseFacade, DbTransaction)

Geçerli yöntemin bu yöntem tarafından kullanılmay olduğunu SQL ve bir işlemde çalışmay ExecutionStrategy olabilir. ExecutionStrategy açıkça kullanılabilir ve aynı zamanda bir işlem kullanılırken aynı SQL emin olun.

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 DbParameter'a dönüştürülür. Parametre oluşturmak için irdelenmiş dize söz dizimi kullanmak üzere ExecuteSqlInterpolated kullanmayı da düşünebilirsiniz.

ExecuteSqlCommand(DatabaseFacade, RawSqlString, Object[])
Kullanımdan kalktı.

Verilen verileri SQL veritabanında yürütür ve etkilenen satır sayısını döndürür.

Bu yöntemin bir işlem başlatmaz. Bu yöntemi bir işlemle kullanmak için önce veya BeginTransaction(DatabaseFacade, IsolationLevel) çağrısında bulundurarak. UseTransaction(DatabaseFacade, DbTransaction)

Geçerli yöntemin bu yöntem tarafından kullanılmay olduğunu SQL ve bir işlemde çalışmay ExecutionStrategy olabilir. ExecutionStrategy açıkça kullanılabilir ve aynı zamanda bir işlem kullanılırken aynı SQL emin olun.

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 - context.Database.ExecuteSqlCommand("SELECT * FROM [dbo].[SearchBlogs]({0})", userSuppliedSearchTerm). Parametre oluşturmak için irdelenmiş dize söz dizimi kullanmak üzere ExecuteSqlInterpolated kullanmayı da düşünebilirsiniz.

ExecuteSqlCommand(DatabaseFacade, FormattableString)
Kullanımdan kalktı.

Verilen verileri SQL veritabanında yürütür ve etkilenen satır sayısını döndürür.

Bu yöntemin bir işlem başlatmaz. Bu yöntemi bir işlemle kullanmak için önce veya BeginTransaction(DatabaseFacade, IsolationLevel) çağrısında bulundurarak. UseTransaction(DatabaseFacade, DbTransaction)

Geçerli yöntemin bu yöntem tarafından kullanılmay olduğunu SQL ve bir işlemde çalışmay ExecutionStrategy olabilir. ExecutionStrategy açıkça kullanılabilir ve aynı zamanda bir işlem kullanılırken aynı SQL emin olun.

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 - context.Database.ExecuteSqlCommand($"SELECT * FROM [dbo].[SearchBlogs]({userSuppliedSearchTerm})").

ExecuteSqlCommand(DatabaseFacade, String, Object[])
ExecuteSqlCommandAsync(DatabaseFacade, RawSqlString, IEnumerable<Object>, CancellationToken)
Kullanımdan kalktı.

Verilen verileri SQL veritabanında yürütür ve etkilenen satır sayısını döndürür.

Bu yöntemin bir işlem başlatmaz. Bu yöntemi bir işlemle kullanmak için önce veya BeginTransaction(DatabaseFacade, IsolationLevel) çağrısında bulundurarak. UseTransaction(DatabaseFacade, DbTransaction)

Geçerli yöntemin bu yöntem tarafından kullanılmay olduğunu SQL ve bir işlemde çalışmay ExecutionStrategy olabilir. ExecutionStrategy açıkça kullanılabilir ve aynı zamanda bir işlem aynı SQL emin olun.

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 DbParameter'a dönüştürülür. Parametre oluşturmak için irdelenmiş dize söz dizimi kullanmak üzere ExecuteSqlInterpolated kullanmayı da düşünebilirsiniz.

ExecuteSqlCommandAsync(DatabaseFacade, RawSqlString, Object[])
Kullanımdan kalktı.

Verilen verileri SQL veritabanında yürütür ve etkilenen satır sayısını döndürür.

Bu yöntemin bir işlem başlatmaz. Bu yöntemi bir işlemle kullanmak için önce veya BeginTransaction(DatabaseFacade, IsolationLevel) çağrısında bulundurarak. UseTransaction(DatabaseFacade, DbTransaction)

Geçerli yöntemin bu yöntem tarafından kullanılmay olduğunu SQL ve bir işlemde çalışmay ExecutionStrategy olabilir. ExecutionStrategy açıkça kullanılabilir ve aynı zamanda bir işlem kullanılırken aynı SQL emin olun.

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 - context.Database.ExecuteSqlCommandAsync("SELECT * FROM [dbo].[SearchBlogs]({0})", userSuppliedSearchTerm). Parametre oluşturmak için irdelenmiş dize söz dizimi kullanmak üzere ExecuteSqlInterpolated kullanmayı da düşünebilirsiniz.

ExecuteSqlCommandAsync(DatabaseFacade, RawSqlString, CancellationToken)
Kullanımdan kalktı.

Verilen verileri SQL veritabanında yürütür ve etkilenen satır sayısını döndürür.

Bu yöntemin bir işlem başlatmaz. Bu yöntemi bir işlemle kullanmak için önce veya BeginTransaction(DatabaseFacade, IsolationLevel) çağrısında bulundurarak. UseTransaction(DatabaseFacade, DbTransaction)

Geçerli yöntemin bu yöntem tarafından kullanılmay olduğunu SQL ve bir işlemde çalışmay ExecutionStrategy olabilir. ExecutionStrategy açıkça kullanılabilir ve aynı zamanda bir işlem kullanılırken aynı SQL emin olun.

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 - context.Database.ExecuteSqlCommandAsync("SELECT * FROM [dbo].[SearchBlogs]({0})", userSuppliedSearchTerm).

ExecuteSqlCommandAsync(DatabaseFacade, FormattableString, CancellationToken)
Kullanımdan kalktı.

Verilen verileri SQL veritabanında yürütür ve etkilenen satır sayısını döndürür.

Bu yöntemin bir işlem başlatmaz. Bu yöntemi bir işlemle kullanmak için önce veya BeginTransaction(DatabaseFacade, IsolationLevel) çağrısında bulundurarak. UseTransaction(DatabaseFacade, DbTransaction)

Geçerli yöntemin bu yöntem tarafından kullanılmay olduğunu SQL ve bir işlemde çalışmay ExecutionStrategy olabilir. ExecutionStrategy açıkça kullanılabilir ve aynı zamanda bir işlem kullanılırken aynı SQL emin olun.

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 - context.Database.ExecuteSqlCommandAsync($"SELECT * FROM [dbo].[SearchBlogs]({userSuppliedSearchTerm})").

ExecuteSqlCommandAsync(DatabaseFacade, String, CancellationToken, Object[])
ExecuteSqlInterpolated(DatabaseFacade, FormattableString)

Verilen verileri SQL veritabanında yürütür ve etkilenen satır sayısını döndürür.

Bu yöntemin bir işlem başlatmaz. Bu yöntemi bir işlemle kullanmak için önce veya BeginTransaction(DatabaseFacade, IsolationLevel) çağrısında bulundurarak. UseTransaction

Geçerli yöntemin bu yöntem tarafından kullanılmay olduğunu SQL ve bir işlemde çalışmay ExecutionStrategy olabilir. bir açıkça kullanılabilir ve aynı zamanda bir işlem aynı SQL ExecutionStrategy emin olun.

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:

var userSuppliedSearchTerm = ".NET";
context.Database.ExecuteSqlInterpolated($"UPDATE Blogs SET Rank = 50 WHERE Name = {userSuppliedSearchTerm})");
ExecuteSqlInterpolatedAsync(DatabaseFacade, FormattableString, CancellationToken)

Verilen verileri SQL veritabanında yürütür ve etkilenen satır sayısını döndürür.

Bu yöntemin bir işlem başlatmaz. Bu yöntemi bir işlemle kullanmak için önce veya BeginTransaction(DatabaseFacade, IsolationLevel) çağrısında bulundurarak. UseTransaction

Geçerli yöntemin bu yöntem tarafından kullanılmay olduğunu SQL ve bir işlemde çalışmay ExecutionStrategy olabilir. bir açıkça kullanılabilir ve aynı zamanda bir işlem aynı SQL ExecutionStrategy emin olun.

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:

var userSuppliedSearchTerm = ".NET";
context.Database.ExecuteSqlInterpolatedAsync($"UPDATE Blogs SET Rank = 50 WHERE Name = {userSuppliedSearchTerm})");
ExecuteSqlRaw(DatabaseFacade, String, IEnumerable<Object>)

Verilen verileri SQL veritabanında yürütür ve etkilenen satır sayısını döndürür.

Bu yöntemin bir işlem başlatmaz. Bu yöntemi bir işlemle kullanmak için önce veya BeginTransaction(DatabaseFacade, IsolationLevel) çağrısında bulundurarak. UseTransaction

Geçerli yöntemin bu yöntem tarafından kullanılmay olduğunu SQL ve bir işlemde çalışmay ExecutionStrategy olabilir. bir açıkça kullanılabilir ve aynı zamanda bir işlem aynı SQL ExecutionStrategy emin olun.

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:

var userSuppliedSearchTerm = ".NET";
context.Database.ExecuteSqlRaw("UPDATE Blogs SET Rank = 50 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 yönteme geçmeyin. Bunu yapmak, ekleme saldırılarına karşı SQL ortaya çıkarır. İlişkili dize söz dizimlerini kullanmak için kullanarak ExecuteSqlInterpolated(DatabaseFacade, FormattableString) parametre oluşturabilirsiniz.

ExecuteSqlRaw(DatabaseFacade, String, Object[])

Verilen verileri SQL veritabanında yürütür ve etkilenen satır sayısını döndürür.

Bu yöntemin bir işlem başlatmaz. Bu yöntemi bir işlemle kullanmak için önce veya BeginTransaction(DatabaseFacade, IsolationLevel) çağrısında bulundurarak. UseTransaction

Geçerli yöntemin bu yöntem tarafından kullanılmay olduğunu SQL ve bir işlemde çalışmay ExecutionStrategy olabilir. bir açıkça kullanılabilir ve aynı zamanda bir işlem aynı SQL ExecutionStrategy emin olun.

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:

var userSuppliedSearchTerm = ".NET";
context.Database.ExecuteSqlRaw("UPDATE Blogs SET Rank = 50 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 yönteme geçmeyin. Bunu yapmak, ekleme saldırılarına karşı SQL ortaya çıkarır. İlişkili dize söz dizimlerini kullanmak için kullanarak ExecuteSqlInterpolated(DatabaseFacade, FormattableString) parametre oluşturabilirsiniz.

ExecuteSqlRawAsync(DatabaseFacade, String, IEnumerable<Object>, CancellationToken)

Verilen verileri SQL veritabanında yürütür ve etkilenen satır sayısını döndürür.

Bu yöntemin bir işlem başlatmaz. Bu yöntemi bir işlemle kullanmak için önce veya BeginTransaction(DatabaseFacade, IsolationLevel) çağrısında bulundurarak. UseTransaction

Geçerli yöntemin bu yöntem tarafından kullanılmay olduğunu SQL ve bir işlemde çalışmay ExecutionStrategy olabilir. ExecutionStrategy açıkça kullanılabilir ve aynı zamanda bir işlem aynı SQL emin olun.

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:

var userSuppliedSearchTerm = ".NET";
context.Database.ExecuteSqlRawAsync("UPDATE Blogs SET Rank = 50 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 yönteme geçmeyin. Bunu yapmak, ekleme saldırılarına karşı SQL ortaya çıkarır. İlişkili dize söz dizimlerini kullanmak için kullanarak ExecuteSqlInterpolated(DatabaseFacade, FormattableString) parametre oluşturabilirsiniz.

ExecuteSqlRawAsync(DatabaseFacade, String, Object[])

Verilen verileri SQL veritabanında yürütür ve etkilenen satır sayısını döndürür.

Bu yöntemin bir işlem başlatmaz. Bu yöntemi bir işlemle kullanmak için önce veya BeginTransaction(DatabaseFacade, IsolationLevel) çağrısında bulundurarak. UseTransaction

Geçerli yöntemin bu yöntem tarafından kullanılmay olduğunu SQL ve bir işlemde çalışmay ExecutionStrategy olabilir. bir açıkça kullanılabilir ve aynı zamanda bir işlem aynı SQL ExecutionStrategy emin olun.

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:

var userSuppliedSearchTerm = ".NET";
context.Database.ExecuteSqlRawAsync("UPDATE Blogs SET Rank = 50 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 yönteme geçmeyin. Bunu yapmak, ekleme saldırılarına karşı SQL ortaya çıkarır. İlişkili dize söz dizimlerini kullanmak için kullanarak ExecuteSqlInterpolated(DatabaseFacade, FormattableString) parametre oluşturabilirsiniz.

ExecuteSqlRawAsync(DatabaseFacade, String, CancellationToken)

Verilen verileri SQL veritabanında yürütür ve etkilenen satır sayısını döndürür.

Bu yöntemin bir işlem başlatmaz. Bu yöntemi bir işlemle kullanmak için önce veya BeginTransaction(DatabaseFacade, IsolationLevel) çağrısında bulundurarak. UseTransaction

Geçerli yöntemin bu yöntem tarafından kullanılmay olduğunu SQL ve bir işlemde çalışmay ExecutionStrategy olabilir. bir açıkça kullanılabilir ve aynı zamanda bir işlem aynı SQL ExecutionStrategy emin olun.

var userSuppliedSearchTerm = ".NET";
context.Database.ExecuteSqlRawAsync("UPDATE Blogs SET Rank = 50 WHERE Name = {0}", userSuppliedSearchTerm);

Hiçbir zaman doğrulanmış kullanıcı tarafından sağlanan değerleri içeren bir bir concatenated veya i ilişkilendirme dizesi ($"") bu yönteme geçmeyin. Bunu yapmak, ekleme saldırılarına karşı SQL ortaya çıkarır.

GenerateCreateScript(DatabaseFacade)

Geçerli model için tüm tabloları oluşturmak için bir betik oluşturur.

GetAppliedMigrations(DatabaseFacade)

Hedef veritabanına uygulanmış olan tüm geçişleri alır.

GetAppliedMigrationsAsync(DatabaseFacade, CancellationToken)

Hedef veritabanına uygulanan tüm geçişleri zaman uyumsuz olarak alır.

GetCommandTimeout(DatabaseFacade)

Bu ile yürütülen komutlar için ayarlanmış zaman aşımını (saniye olarak) DbContext döndürür.

Komut zaman aşımının genellikle veritabanı bağlantı dizesinde ayarlanmış olan bağlantı zaman aşımından farklı olduğunu unutmayın.

GetConnectionString(DatabaseFacade)

Bunun için yapılandırılan temel bağlantı dizesini DbContext alır.

GetDbConnection(DatabaseFacade)

Bunun için ADO.NET DbConnection temel alınan verileri DbContext alır.

Bu bağlantı, ağ tarafından oluşturulduktan sonra Entity Framework. DbConnection nesnesi Entity Framework bir bağlantı dizesi kullanımda olan veritabanı sağlayıcısı için 'UseMyProvider' yöntemine geçirilebilirse bağlantılar, veritabanı tarafından oluşturulur. Buna karşılık uygulama, 'UseMyProvider' içinde Entity Framework DbConnection'ın elden çıkarılama sorumluluğundadır.

GetMigrations(DatabaseFacade)

Yapılandırılmış geçişler derlemesinde tanımlanan tüm geçişleri alır.

GetPendingMigrations(DatabaseFacade)

Derlemede tanımlanan ancak hedef veritabanına uygulanmadı olan tüm geçişleri alır.

GetPendingMigrationsAsync(DatabaseFacade, CancellationToken)

Derlemede tanımlanan ancak hedef veritabanına uygulanmadan tüm geçişleri zaman uyumsuz olarak alır.

IsRelational(DatabaseFacade)

Şu true anda kullanmakta olan veritabanı sağlayıcısı bir ilişkisel veritabanı ise döndürür.

Migrate(DatabaseFacade)

Bağlam için bekleyen tüm geçişleri veritabanına uygular. Henüz yoksa veritabanını oluşturur.

Bu API'nin ile birbirini dışlar. EnsureCreated() Created'in veritabanını oluşturmak için geçişleri kullanmay olduğundan, oluşturulan veritabanı daha sonra geçişler kullanılarak güncelleştirilemez.

MigrateAsync(DatabaseFacade, CancellationToken)

Bağlam için bekleyen tüm geçişleri veritabanına zaman uyumsuz olarak uygular. Henüz yoksa veritabanını oluşturur.

Bu API'nin ile birbirini dışlar. EnsureCreated() EnsureCreated() veritabanını oluşturmak için geçişleri kullanmaz ve bu nedenle oluşturulan veritabanı daha sonra geçişler kullanılarak güncelleştirilemez.

OpenConnection(DatabaseFacade)

Temel alınan 'i DbConnection açar.

OpenConnectionAsync(DatabaseFacade, CancellationToken)

Temel alınan 'i DbConnection açar.

SetCommandTimeout(DatabaseFacade, Nullable<Int32>)

Bu ile yürütülen komutlar için kullanmak üzere zaman aşımını (saniye olarak) DbContext ayarlar.

Bu değer ayarlanırsa, sorguyu yürütmek için bir CommandTimeout Entity Framework her DbCommand oluşturduğunda ayarlamak için kullanılır.

Bu değer ayarlanmamışsa, kullanılan varsayılan değer temel alınan veri sağlayıcısı ADO.NET tanımlanır. Varsayılan değerlerin ayrıntıları için ADO.NET sağlayıcısında uygulamasının DbCommand belgelerine başvurun.

Komut zaman aşımının bağlantı zaman aşımından farklı olduğunu unutmayın. Bağlantı zaman aşımı genellikle bağlantı dizesinde yapılandırılır. daha yakın zamanda, bazı ADO.NET veri sağlayıcıları bağlantı dizesinde bir komut zaman aşımı ayarlama özelliğini de ekliyor. Komut zaman aşımı için bu API 'ye sahip bir değer kümesi, bağlantı dizesinde ayarlanan herhangi bir değeri geçersiz kılar.

SetCommandTimeout(DatabaseFacade, TimeSpan)

Bu ile yürütülen komutlar için kullanılacak zaman aşımını ayarlar DbContext .

Bu, TimeSpan değeri ayarlamak için kullanılmasına izin veren bir cukr yöntemidir. ' A temsilciler SetCommandTimeout(DatabaseFacade, Nullable<Int32>) .

SetConnectionString(DatabaseFacade, String)

Bu için yapılandırılan temeldeki bağlantı dizesini ayarlar DbContext .

Varsa, varsa bağlantı dizesini değiştirmek mümkün olmayabilir.

SetDbConnection(DatabaseFacade, DbConnection)

bunun için temel ADO.NET ayarlar DbConnection DbContext .

Bağlantı yalnızca mevcut bağlantı varsa, açık değilse ayarlanabilir.

Verilen bağlantının, Entity Framework tarafından oluşturulmamış olduğundan, uygulama kodu tarafından atılmalıdır.

UseTransaction(DatabaseFacade, DbTransaction)

DbTransactionÜzerinde veritabanı işlemleri tarafından kullanılacak öğesini ayarlar DbContext .

UseTransaction(DatabaseFacade, DbTransaction, Guid)

DbTransactionÜzerinde veritabanı işlemleri tarafından kullanılacak öğesini ayarlar DbContext .

UseTransactionAsync(DatabaseFacade, DbTransaction, Guid, CancellationToken)

DbTransactionÜzerinde veritabanı işlemleri tarafından kullanılacak öğesini ayarlar DbContext .

UseTransactionAsync(DatabaseFacade, DbTransaction, CancellationToken)

DbTransactionÜzerinde veritabanı işlemleri tarafından kullanılacak öğesini ayarlar DbContext .

IsSqlite(DatabaseFacade)

Kullanılmakta true olan veritabanı sağlayıcısının SQLite sağlayıcısı olup olmadığını döndürür.

Bu yöntem yalnızca DbContext sağlayıcının bilindiğinden, yapılandırıldıktan sonra kullanılabilir. Bu OnConfiguring(DbContextOptionsBuilder) , uygulama kodunun, bağlamı yapılandırmanın bir parçası olarak kullanmak üzere ayarladığı konum olduğundan, bu yöntemin ' de kullanılamaz olduğu anlamına gelir.

IsSqlServer(DatabaseFacade)

Veritabanı true sağlayıcısının şu anda kullanımda olan veritabanı sağlayıcısının SQL Server döndürür.

Bu yöntem yalnızca yapılandırıldığında kullanılabilir çünkü yalnızca DbContext sağlayıcının bilindiği bir yöntemdir. Bu, uygulama kodunun sağlayıcıyı bağlamı yapılandırmanın bir parçası olarak kullanmak üzere ayar kullandığı için bu yöntemin OnConfiguring(DbContextOptionsBuilder) içinde kullanılamay anlamına gelir.

EnlistTransaction(DatabaseFacade, Transaction)

TransactionVeritabanı işlemleri için kullanılmak üzere bir varolan belirtir.

GetEnlistedTransaction(DatabaseFacade)

Şu anda kayıtlı olan işlemi döndürür.

Şunlara uygulanır