Mengapa IDbCommandTreeInterceptor dilewati pada permintaan kedua?

Dengan menggunakan kerangka entitas, saya telah menerapkan penghapusan sementara & pembatasan tingkat data dengan IDbCommandTreeInterceptor. Untuk kueri pertama yang menggunakan konteks tersebut, pencegat akan terkena. Namun mencoba lagi (menyegarkan browser), pencegat dilewati. Saya telah memeriksa apakah data sedang di-cache dengan mengubah beberapa data menggunakan studio manajemen server SQL. Perubahannya tercermin tetapi pencegatnya masih dilewati. Apa yang mungkin menyebabkan hal ini terjadi?


person John Staurt    schedule 09.10.2017    source sumber
comment
Jadi dengan pencegat dilewati, maksud Anda entitas target benar-benar dihapus, bukan dihapus sementara?   -  person Evk    schedule 09.10.2017
comment
objek yang dihapus sementara dikembalikan setelah dihapus sementara   -  person John Staurt    schedule 09.10.2017
comment
Pencegat juga dilewati saat debugging.   -  person John Staurt    schedule 09.10.2017


Jawaban (1)


menurut komentar sumber ini diharapkan perilaku

Pohon perintah dibuat untuk kueri dan perintah sisipkan/perbarui/hapus. Namun, pohon perintah kueri di-cache oleh model yang berarti pembuatan pohon perintah hanya terjadi saat pertama kali kueri dijalankan dan pemberitahuan ini hanya akan terjadi pada saat itu.

Sebagai konsekuensinya, hasil pencegat Anda tidak dapat bergantung pada data.

person jbl    schedule 09.10.2017
comment
Dapat dimengerti, tetapi satu hal yang masih membingungkan adalah interseptor terkena (untuk kueri lama) jika saya menjalankan kueri baru, lalu jalankan kembali kueri lama melalui EF. Namun jika kedua kueri telah dieksekusi satu kali, pencegat akan dilewati lagi untuk keduanya secara bergantian, hingga kueri baru dieksekusi. Kemudian Interceptor mendapat pukulan untuk kueri baru dan kueri lama. - person John Staurt; 09.10.2017
comment
@JohnStaurt memang tidak terduga. Sudahkah Anda memodifikasi bagian queryCache pada konfigurasi (lihat blogs.msdn.microsoft.com/premier_developer/2017/03/23/ ) ? - person jbl; 09.10.2017