ChangeTracker Sınıf

Tanım

Bağlamın izlediği varlık örnekleri için değişiklik izleme bilgilerine ve işlemlerine erişim sağlar. Bu sınıfın örnekleri genellikle öğesinden ChangeTracker alınır ve uygulama kodunuzda doğrudan oluşturulacak şekilde tasarlanmamıştır.

public class ChangeTracker : Microsoft.EntityFrameworkCore.Infrastructure.IInfrastructure<Microsoft.EntityFrameworkCore.ChangeTracking.Internal.IStateManager>
public class ChangeTracker : Microsoft.EntityFrameworkCore.Infrastructure.IInfrastructure<Microsoft.EntityFrameworkCore.ChangeTracking.Internal.IStateManager>, Microsoft.EntityFrameworkCore.Infrastructure.IResettableService
public class ChangeTracker : Microsoft.EntityFrameworkCore.Infrastructure.IResettableService
type ChangeTracker = class
    interface IInfrastructure<IStateManager>
type ChangeTracker = class
    interface IInfrastructure<IStateManager>
    interface IResettableService
type ChangeTracker = class
    interface IResettableService
Public Class ChangeTracker
Implements IInfrastructure(Of IStateManager)
Public Class ChangeTracker
Implements IInfrastructure(Of IStateManager), IResettableService
Public Class ChangeTracker
Implements IResettableService
Devralma
ChangeTracker
Uygulamalar
IInfrastructure<Microsoft.EntityFrameworkCore.ChangeTracking.Internal.IStateManager> IResettableService

Açıklamalar

Daha fazla bilgi ve örnek için bkz. EF Core değişiklik izleme .

Oluşturucular

ChangeTracker(DbContext)

Bu API, Entity Framework Core altyapısını destekler ve doğrudan kodunuzdan kullanılması amaçlanmamıştır. Bu API gelecek sürümlerde değiştirilebilir veya kaldırılabilir.

ChangeTracker(DbContext, IStateManager, IChangeDetector, IModel, IEntityEntryGraphIterator)

Bu, Entity Framework Core altyapısını destekleyen ve genel API'ler ile aynı uyumluluk standartlarına tabi olmayan bir iç API'dir. Herhangi bir sürümde bildirimde bulunmaksızın değiştirilebilir veya kaldırılabilir. Bunu yalnızca kodunuzda son derece dikkatli bir şekilde kullanmanız ve bunu yapmanın yeni bir Entity Framework Core sürümüne güncelleştirirken uygulama hatalarına neden olabileceğini bilmeniz gerekir.

ChangeTracker(IStateManager, IChangeDetector, IEntityEntryGraphIterator, DbContext)

Bu API, Entity Framework Core altyapısını destekler ve doğrudan kodunuzdan kullanılması amaçlanmamıştır. Bu API gelecek sürümlerde değiştirilebilir veya kaldırılabilir.

Özellikler

AutoDetectChangesEnabled

yönteminin ve ilgili sınıfların DetectChanges() yöntemleri DbContext tarafından otomatik olarak çağrılıp çağrılmadığını belirten bir değer alır veya ayarlar.

CascadeDeleteTiming

Bağımlı/alt varlığın üst/asıl varlığı olarak Deletedişaretlendikten sonra durumunun ne zaman olarak ayarlandığını Deleted belirten bir değer alır veya ayarlar. Varsayılan değer şudurImmediate:

Context

Bu değişiklik izleyicisinin ait olduğu bağlamı alır.

DebugView

İzlenen varlıkların insanlar tarafından okunabilir bir görünümü için hata ayıklayıcıda bu özelliği genişletin.

Uyarı: Hata ayıklama dizelerinin biçimine güvenmeyin. Bunlar yalnızca hata ayıklama için tasarlanmıştır ve yayınlar arasında rastgele değiştirilebilir.

Daha fazla bilgi ve örnek için bkz. EF Core değişiklik izleme .

DeleteOrphansTiming

Bağımlı/alt varlığın durumunun Deleted bir üst/asıl varlıktan bir kez ayrılmış durumda olacağını belirten bir gezinti veya yabancı anahtar özelliğinin null olarak ayarlandığını belirten bir değer alır veya ayarlar. Immediate varsayılan değerdir.

LazyLoadingEnabled

İzlenen varlıklar için gezinti özelliklerinin ilk erişimde yüklenip yüklenmeyeceğini belirten bir değer alır veya ayarlar.

QueryTrackingBehavior

Bağlama göre çalıştırılacak LINQ sorguları için izleme davranışını alır veya ayarlar. Değişiklik izlemenin devre dışı bırakılması, her varlık örneği için değişiklik izleme ayarlama ek yükünü önlediğinden salt okunur senaryolar için kullanışlıdır. Varlık örneklerini işlemek ve kullanarak SaveChanges()bu değişiklikleri veritabanında kalıcı hale getirmek istiyorsanız değişiklik izlemeyi devre dışı bırakmamalısınız.

Yöntemler

AcceptAllChanges()

Bağlamda varlıklarda yapılan tüm değişiklikleri kabul eder. İzlenen varlıkların veritabanının geçerli durumunu temsil ettiğini varsayar. Bu yöntem genellikle değişiklikler veritabanına başarıyla kaydedildikten sonra tarafından SaveChanges() çağrılır.

CascadeChanges()

Alt/bağımlı varlıkların gerekli üst/asıl varlıktan ayrılmaları veya gerekli üst/asıl varlığın kendisi silinmesi durumunda hemen art arda silinmesini zorlar. Bkz. DeleteBehavior.

Clear()

İzlenen tüm varlıkları izlemeyi durdurur.

DetectChanges()

Örnek verilerinde yapılan değişiklikleri algılamak için izlenen varlık örneklerini tarar. DetectChanges() , güncel bilgiler gerektiğinde (değişiklik izleme bilgilerini döndürmeden önce SaveChanges() ve döndürürken) genellikle bağlam tarafından otomatik olarak çağrılır. Genellikle yalnızca devre dışı bırakdıysanız AutoDetectChangesEnabledbu yöntemi çağırmanız gerekir.

Daha fazla bilgi ve örnek için bkz. EF Core değişiklik izleme .

Entries()

Bağlam tarafından izlenen her varlık için bir EntityEntry döndürür. Girdiler, her varlık için değişiklik izleme bilgilerine ve işlemlerine erişim sağlar.

Entries<TEntity>()

EntityEntry Bağlam tarafından izlenen belirli bir türün tüm varlıkları için bir alır. Girdiler, her varlık için değişiklik izleme bilgilerine ve işlemlerine erişim sağlar.

HasChanges()

Yeni, silinmiş veya değiştirilmiş varlıkların izlenip izlenmediğini denetler, böylece bu değişiklikler çağrılırsa veya SaveChangesAsync(CancellationToken) çağrılırsa SaveChanges() veritabanına gönderilir.

TrackGraph(Object, Action<EntityEntryGraphNode>)

Gezinti özellikleri arasında geçiş yaparak bir varlığı ve erişilebilir varlıkları izlemeye başlar. Dolaşma özyinelemeli olduğundan, bulunan varlıkların gezinti özellikleri de taranır. Belirtilen callback , bulunan her varlık için çağrılır ve her varlığın State izleneceği değeri ayarlamalıdır. Durum ayarlanmamışsa varlık izlenmemiş olarak kalır.

TrackGraph<TState>(Object, TState, Func<EntityEntryGraphNode,TState,Boolean>)

Bir varlığın ve erişilebilir varlıkların gezinti özellikleri arasında geçiş yaparak izlemeye başlar. Dolaşma özyinelemeli olduğundan, bulunan varlıkların gezinti özellikleri de taranır. Belirtilen callback , bulunan her varlık için çağrılır ve her varlığın State izleneceği değeri ayarlamalıdır. Durum ayarlanmamışsa varlık izlenmemiş olarak kalır.

Bu yöntem, varlıkların bağlamın bir örneği kullanılarak alındığı ve sonra değişikliklerin bağlamın farklı bir örneği kullanılarak kaydedildiği bağlantısız senaryolarda kullanılmak üzere tasarlanmıştır. Buna örnek olarak, bir hizmet çağrısının veritabanından varlıkları aldığı ve başka bir hizmet çağrısının varlıklarda yapılan değişiklikleri sürdürdüğü bir web hizmeti örnek olarak verilmiştir. Her hizmet çağrısı, çağrı tamamlandığında atılan bağlamın yeni bir örneğini kullanır.

Grafın çapraz geçişi genellikle zaten izlenen bir varlıkla karşılaşıldığında veya izlenmemesi gereken bir varlığa ulaşıldığında durdurulmalıdır. Bu tipik davranış için aşırı yüklemeyi kullanın TrackGraph(Object, Action<EntityEntryGraphNode>) . Öte yandan bu aşırı yükleme, geri çağırmanın dolaşmanın ne zaman sona ereceği konusunda karar vermesine olanak tanır, ancak dolaşmanın sonsuz döngüye girmemesini sağlamak için çağıranın üzerindedir.

TrackGraph<TState>(Object, TState, Func<EntityEntryGraphNode<TState>,Boolean>)

Gezinti özellikleri arasında geçiş yaparak bir varlığı ve erişilebilir varlıkları izlemeye başlar. Dolaşma özyinelemeli olduğundan, bulunan varlıkların gezinti özellikleri de taranır. Belirtilen callback , bulunan her varlık için çağrılır ve her varlığın State izleneceği değeri ayarlamalıdır. Durum ayarlanmamışsa varlık izlenmemiş olarak kalır.

Ekinlikler

DetectedAllChanges

Varlık grafı için açık bir çağrı DetectChanges()aracılığıyla veya veya yürütmenin SaveChanges()SaveChangesAsync(CancellationToken)bir parçası gibi otomatik olarak herhangi bir değişiklik algılandığında bir olay tetiklendi.

DetectedEntityChanges

Tek bir varlıkta açık bir veya çağrısı DetectChanges()DetectChanges()aracılığıyla ya da veya yürütmenin SaveChanges()SaveChangesAsync(CancellationToken)bir parçası gibi otomatik olarak herhangi bir değişiklik algılandığında bir olay tetiklendi.

DetectingAllChanges

Varlık grafı değişiklikleri algılandığında, açık bir çağrısı DetectChanges()aracılığıyla veya veya yürütmenin SaveChanges()SaveChangesAsync(CancellationToken)bir parçası gibi otomatik olarak bir olay tetiklenir.

DetectingEntityChanges

Tek bir varlığa yapılan değişiklikler algılanırken tetiklenen bir olay, veya DetectChanges()açık bir çağrısı DetectChanges() aracılığıyla ya da veya yürütmenin SaveChanges()SaveChangesAsync(CancellationToken)bir parçası gibi otomatik olarak gerçekleşmek üzeredir.

StateChanged

İlişkili DbContext tarafından izlenen bir varlık bir birinden diğerine EntityState taşındığında bir olay tetiklendi.

StateChanging

İlişkili DbContext tarafından izlenen bir varlık bir birinden diğerine EntityState geçtiğinde bir olay tetiklendi.

Tracked

Bir varlık, bir izleme sorgusundan döndürülürken veya bağlama eklendiğinden veya eklendiğinden bağlam tarafından izlendiğinde bir olay tetiklenir.

Tracking

Bir varlık, bir izleme sorgusundan döndürülür veya bağlama eklendiğinden veya eklendiğinden, bağlam tarafından izlenmek üzere olduğunda bir olay tetiklendi.

Belirtik Arabirim Kullanımları

IInfrastructure<IStateManager>.Instance
Kullanımdan kalktı..

İzlenen varlıklar hakkındaki bilgileri depolamak için kullanılan iç durum yöneticisini alır.

Bu özellik, uzantı yöntemleri tarafından kullanılmak üzere tasarlanmıştır. Uygulama kodunda kullanılması amaçlanmamıştır.

IResettableService.ResetState()

Havuzdan kullanılabilmesi için hizmeti sıfırlar.

IResettableService.ResetStateAsync(CancellationToken)

Bağlamın izlediği varlık örnekleri için değişiklik izleme bilgilerine ve işlemlerine erişim sağlar. Bu sınıfın örnekleri genellikle öğesinden ChangeTracker alınır ve uygulama kodunuzda doğrudan oluşturulacak şekilde tasarlanmamıştır.

Uzantı Metotları

ToDebugString(ChangeTracker, ChangeTrackerDebugStringOptions, Int32)

Verilen meta verilerin insan tarafından okunabilir bir gösterimini oluşturur.

Uyarı: Döndürülen dizenin biçimine güvenmeyin. Yalnızca hata ayıklama için tasarlanmıştır ve yayınlar arasında rastgele değiştirilebilir.

GetInfrastructure<T>(IInfrastructure<T>)

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

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

Şunlara uygulanır