Bagikan melalui


ChangeTracker Kelas

Definisi

Menyediakan akses untuk mengubah informasi pelacakan dan operasi untuk instans entitas yang dilacak konteksnya. Instans kelas ini biasanya diperoleh dari ChangeTracker dan tidak dirancang untuk secara langsung dibangun dalam kode aplikasi Anda.

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
Warisan
ChangeTracker
Penerapan
IInfrastructure<Microsoft.EntityFrameworkCore.ChangeTracking.Internal.IStateManager> IResettableService

Keterangan

Lihat Pelacakan perubahan EF Core untuk informasi dan contoh selengkapnya.

Konstruktor

ChangeTracker(DbContext)

API ini mendukung infrastruktur Entity Framework Core dan tidak dimaksudkan untuk digunakan langsung dari kode Anda. API ini dapat berubah atau dihapus dalam rilis mendatang.

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

Ini adalah API internal yang mendukung infrastruktur Entity Framework Core dan tidak tunduk pada standar kompatibilitas yang sama dengan API publik. Ini dapat diubah atau dihapus tanpa pemberitahuan dalam rilis apa pun. Anda hanya boleh menggunakannya langsung dalam kode Anda dengan sangat hati-hati dan mengetahui bahwa melakukannya dapat mengakibatkan kegagalan aplikasi saat memperbarui ke rilis Entity Framework Core baru.

ChangeTracker(IStateManager, IChangeDetector, IEntityEntryGraphIterator, DbContext)

API ini mendukung infrastruktur Entity Framework Core dan tidak dimaksudkan untuk digunakan langsung dari kode Anda. API ini dapat berubah atau dihapus dalam rilis mendatang.

Properti

AutoDetectChangesEnabled

Mendapatkan atau menetapkan nilai yang menunjukkan apakah metode dipanggil DetectChanges() secara otomatis dengan metode DbContext dan kelas terkait.

CascadeDeleteTiming

Mendapatkan atau menetapkan nilai yang menunjukkan kapan entitas dependen/anak akan mengatur statusnya ke Deleted setelah entitas induk/utamanya ditandai sebagai Deleted. Nilai defaultnya adalahImmediate.

Context

Mendapatkan konteks tempat pelacak perubahan ini berada.

DebugView

Perluas properti ini di debugger untuk tampilan entitas yang dapat dibaca manusia yang sedang dilacak.

Peringatan: Jangan mengandalkan format string debug. Mereka dirancang hanya untuk penelusuran kesalahan dan dapat berubah sesegera mungkin antar rilis.

Lihat Pelacakan perubahan EF Core untuk informasi dan contoh selengkapnya.

DeleteOrphansTiming

Mendapatkan atau menetapkan nilai yang menunjukkan kapan entitas dependen/anak akan memiliki statusnya diatur ke Deleted sekali diputus dari entitas induk/utama melalui navigasi atau properti kunci asing yang diatur ke null. Nilai defaultnya adalah Immediate.

LazyLoadingEnabled

Mendapatkan atau menetapkan nilai yang menunjukkan apakah properti navigasi untuk entitas terlacak akan dimuat pada akses pertama.

QueryTrackingBehavior

Mendapatkan atau mengatur perilaku pelacakan untuk kueri LINQ yang dijalankan terhadap konteks. Menonaktifkan pelacakan perubahan berguna untuk skenario baca-saja karena menghindari overhead pengaturan pelacakan perubahan untuk setiap instans entitas. Anda tidak boleh menonaktifkan pelacakan perubahan jika Anda ingin memanipulasi instans entitas dan mempertahankan perubahan tersebut pada database menggunakan SaveChanges().

Metode

AcceptAllChanges()

Menerima semua perubahan yang dilakukan pada entitas dalam konteks. Akan diasumsikan bahwa entitas yang dilacak mewakili status database saat ini. Metode ini biasanya dipanggil oleh SaveChanges() setelah perubahan berhasil disimpan ke database.

CascadeChanges()

Memaksa penghapusan berjenjang segera entitas anak/dependen ketika mereka diputus dari entitas induk/utama yang diperlukan, atau entitas induk/utama yang diperlukan dihapus sendiri. Lihat DeleteBehavior.

Clear()

Berhenti melacak semua entitas yang saat ini dilacak.

DetectChanges()

Memindai instans entitas terlacak untuk mendeteksi perubahan apa pun yang dilakukan pada data instans. DetectChanges() biasanya dipanggil secara otomatis oleh konteks ketika informasi terbaru diperlukan (sebelum SaveChanges() dan saat mengembalikan informasi pelacakan perubahan). Anda biasanya hanya perlu memanggil metode ini jika Anda telah menonaktifkan AutoDetectChangesEnabled.

Lihat Pelacakan perubahan EF Core untuk informasi dan contoh selengkapnya.

Entries()

Mengembalikan untuk setiap entitas yang EntityEntry dilacak oleh konteks. Entri menyediakan akses untuk mengubah informasi dan operasi pelacakan untuk setiap entitas.

Entries<TEntity>()

EntityEntry Mendapatkan untuk semua entitas dari jenis tertentu yang dilacak oleh konteks. Entri menyediakan akses untuk mengubah informasi dan operasi pelacakan untuk setiap entitas.

HasChanges()

Memeriksa apakah ada entitas baru, dihapus, atau diubah yang sedang dilacak sehingga perubahan ini akan dikirim ke database jika SaveChanges() atau SaveChangesAsync(CancellationToken) dipanggil.

TrackGraph(Object, Action<EntityEntryGraphNode>)

Mulai melacak entitas dan entitas apa pun yang dapat dijangkau dengan melintasi properti navigasinya. Traversal rekursif sehingga properti navigasi entitas yang ditemukan juga akan dipindai. yang ditentukan callback dipanggil untuk setiap entitas yang ditemukan dan harus mengatur State bahwa setiap entitas harus dilacak. Jika tidak ada status yang ditetapkan, entitas tetap tidak terlaruti.

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

Mulai melacak entitas dan entitas apa pun yang dapat dijangkau dengan melintasi properti navigasinya. Traversal rekursif sehingga properti navigasi entitas yang ditemukan juga akan dipindai. yang ditentukan callback dipanggil untuk setiap entitas yang ditemukan dan harus mengatur State bahwa setiap entitas harus dilacak. Jika tidak ada status yang ditetapkan, entitas tetap tidak terlaruti.

Metode ini dirancang untuk digunakan dalam skenario terputus di mana entitas diambil menggunakan satu instans konteks dan kemudian perubahan disimpan menggunakan instans konteks yang berbeda. Contohnya adalah layanan web di mana satu panggilan layanan mengambil entitas dari database dan panggilan layanan lain mempertahankan perubahan apa pun pada entitas. Setiap panggilan layanan menggunakan instans baru konteks yang dibuang saat panggilan selesai.

Biasanya traversal grafik harus berhenti setiap kali entitas yang sudah dilacak ditemukan atau ketika entitas tercapai yang tidak boleh dilacak. Untuk perilaku umum ini, gunakan TrackGraph(Object, Action<EntityEntryGraphNode>) kelebihan beban. Kelebihan beban ini, di sisi lain, memungkinkan panggilan balik untuk memutuskan kapan traversal akan berakhir, tetapi onus kemudian ada pada pemanggil untuk memastikan bahwa traversal tidak akan memasuki perulangan tak terbatas.

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

Mulai melacak entitas dan entitas apa pun yang dapat dijangkau dengan melintasi properti navigasinya. Traversal rekursif sehingga properti navigasi entitas yang ditemukan juga akan dipindai. yang ditentukan callback dipanggil untuk setiap entitas yang ditemukan dan harus mengatur State bahwa setiap entitas harus dilacak. Jika tidak ada status yang ditetapkan, entitas tetap tidak terlaruti.

Acara

DetectedAllChanges

Peristiwa yang diaktifkan ketika setiap perubahan telah terdeteksi ke grafik entitas, baik melalui panggilan eksplisit ke DetectChanges(), atau secara otomatis, seperti bagian dari eksekusi SaveChanges() atau SaveChangesAsync(CancellationToken).

DetectedEntityChanges

Peristiwa yang diaktifkan ketika setiap perubahan telah terdeteksi ke satu entitas, baik melalui panggilan eksplisit ke DetectChanges() atau DetectChanges(), atau secara otomatis, seperti bagian dari eksekusi SaveChanges() atau SaveChangesAsync(CancellationToken).

DetectingAllChanges

Peristiwa yang diaktifkan saat mendeteksi perubahan pada grafik entitas yang akan terjadi, baik melalui panggilan eksplisit ke DetectChanges(), atau secara otomatis, seperti bagian dari eksekusi SaveChanges() atau SaveChangesAsync(CancellationToken).

DetectingEntityChanges

Peristiwa yang diaktifkan saat mendeteksi perubahan pada satu entitas akan terjadi, baik melalui panggilan eksplisit ke DetectChanges() atau DetectChanges(), atau secara otomatis, seperti bagian dari eksekusi SaveChanges() atau SaveChangesAsync(CancellationToken).

StateChanged

Peristiwa diaktifkan saat entitas yang dilacak oleh yang terkait DbContext telah berpindah dari satu EntityState ke entitas lainnya.

StateChanging

Peristiwa diaktifkan saat entitas yang dilacak oleh yang terkait DbContext berpindah dari satu EntityState ke entitas lainnya.

Tracked

Peristiwa diaktifkan saat entitas dilacak oleh konteks, baik karena dikembalikan dari kueri pelacakan, atau karena dilampirkan atau ditambahkan ke konteks.

Tracking

Peristiwa yang diaktifkan saat entitas akan dilacak oleh konteks, baik karena dikembalikan dari kueri pelacakan, atau karena sedang dilampirkan atau ditambahkan ke konteks.

Implementasi Antarmuka Eksplisit

IInfrastructure<IStateManager>.Instance
Kedaluwarsa..

Mendapatkan manajer status internal yang digunakan untuk menyimpan informasi tentang entitas yang dilacak.

Properti ini ditujukan untuk digunakan oleh metode ekstensi. Ini tidak dimaksudkan untuk digunakan dalam kode aplikasi.

IResettableService.ResetState()

Mengatur ulang layanan sehingga dapat digunakan dari kumpulan.

IResettableService.ResetStateAsync(CancellationToken)

Menyediakan akses untuk mengubah informasi pelacakan dan operasi untuk instans entitas yang dilacak konteksnya. Instans kelas ini biasanya diperoleh dari ChangeTracker dan tidak dirancang untuk secara langsung dibangun dalam kode aplikasi Anda.

Metode Ekstensi

ToDebugString(ChangeTracker, ChangeTrackerDebugStringOptions, Int32)

Membuat representasi metadata yang dapat dibaca manusia.

Peringatan: Jangan mengandalkan format string yang dikembalikan. Ini dirancang untuk penelusuran kesalahan saja dan dapat berubah sesegera mungkin antara rilis.

GetInfrastructure<T>(IInfrastructure<T>)

Mendapatkan nilai dari properti yang sedang disembunyikan menggunakan IInfrastructure<T>.

Metode ini biasanya digunakan oleh penyedia database (dan ekstensi lainnya). Umumnya tidak digunakan dalam kode aplikasi.

Berlaku untuk