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?
Mengapa IDbCommandTreeInterceptor dilewati pada permintaan kedua?
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
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
@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