ایجاد یک Interceptor برای پیدا کردن کوئری های کند در EntityFramework Core
نویسنده: زمانی فرهاد
تاریخ: ۱۴۰۰/۰۳/۲۸ ۱۶:۴۳
آدرس: www.dntips.ir
| مطالب | ۳۶۹۴ |
| نویسندگان | ۲۷۶ |
| گروههای مطالب | ۱۰۲۴ |
| نقشههای راه | ۱۱۹ |
| دورهها | ۱۴ |
| اشتراکها | ۱۷۹۱۴ |
در این مطلب میخواهیم یک Interceptor ایجاد کنیم برای پیدا کردن کوئری هایی که بیشتر از 2 ثانیه طول میکشند. برای پیاده سازی باید یک کلاس ایجاد کنیم که از کلاس DbCommandInterceptor ارث بری کند. کلاس DbCommandInterceptor در EF Core 3 و یا ورژنهای بالاتر قرار دارد و به طور مثال نمیتوانید در EF Core 2.1 از آن استفاده کنید
| Method | Description |
|---|---|
| CommandCreating | Before a command is created (NOTE: Everything is a command, so this will intercept all queries) |
| CommandCreated | After a command creation but before execution |
| CommandFailed[Async] | After a command has failed with an exception during execution |
| ReaderExecuting[Async] | Before a “query” command is executed |
| ReaderExecuted[Async] | After a “query” command is executed |
| NonQueryExecuting[Async] | Before a “non-query” command is executed (NOTE: An example of a non-query are usages of ExecuteSqlRaw |
| NonQueryExecuted[Async] | After a “non-query” command is executed |
| ScalarExecuting[Async] | Before a “scalar” command is executed (NOTE: “scalar” is kind of synonymous with stored procedure) |
| ScalarExecuted[Async] | After a “scalar” command is executed |
| DataReaderDisposing | After a command is executed |