آموزشگاه برنامه نویسی تحلیل داده
آموزشگاه برنامه نویسی تحلیل داده

آموزش ایجاد وقفه(interception)

دوره های مرتبط با این مقاله

آموزش ایجاد وقفه (interception)

Interception

خوب در این قسمت چگونگی انجام Intercept در EF زمانی که دستورات پایگاه داده اجرا می شود را یاد خواهید گرفت.
EF 6 توانایی انجام intercept کردن context را بااستفاده از IDbCommandInterceptor را قبل و بعد از اجرا کردن عملیات ExecuteNonQuery، ExecuteScalar، ExecuteReader روی پایگاه داده را فراهم می کند.
نخست IDbCommandInterceptor را به طریق زیر پیاده سازی کنید


  
class EFCommandInterceptor: IDbCommandInterceptor‎
        ‎        {‎
        ‎            public void NonQueryExecuted(System.Data.Common.DbCommand ‎command،‎ ‎DbCommandInterceptionContext interceptionContext)‎
        ‎            {‎
        ‎                LogInfo("NonQueryExecuted"‎،‎ String.Format(" IsAsync: {0}‎،‎ Command Text: ‎‎{1}"‎،‎ ‎interceptionContext.IsAsync،‎ command.CommandText));‎
        ‎            }‎
        ‎            public void NonQueryExecuting(System.Data.Common.DbCommand ‎command،‎ ‎DbCommandInterceptionContext interceptionContext)‎
        ‎            {‎
        ‎                LogInfo("NonQueryExecuting"‎،‎ String.Format(" IsAsync: {0}‎،‎ Command ‎Text: {1}"‎،‎ ‎interceptionContext.IsAsync،‎  command.CommandText));‎
        ‎            }‎
        ‎            public void ReaderExecuted(System.Data.Common.DbCommand ‎command،‎ ‎DbCommandInterceptionContextt interceptionContext)‎
        ‎            {‎
        ‎                LogInfo("ReaderExecuted"‎،‎ String.Format(" IsAsync: {0}‎،‎ Command Text: ‎‎{1}"‎،‎ ‎interceptionContext.IsAsync،‎ command.CommandText));‎
        ‎            }‎
        ‎            public void ReaderExecuting(System.Data.Common.DbCommand ‎command،‎ ‎DbCommandInterceptionContext interceptionContext)‎
        ‎            {‎
        ‎                LogInfo("ReaderExecuting"‎،‎ String.Format(" IsAsync: {0}‎،‎ Command Text: ‎‎{1}"‎،‎ ‎interceptionContext.IsAsync،‎ command.CommandText));‎
        ‎            }‎
        ‎            public void ScalarExecuted(System.Data.Common.DbCommand ‎command،‎ ‎DbCommandInterceptionContext interceptionContext)‎
        ‎            {‎
        ‎                LogInfo("ScalarExecuted"‎،‎ String.Format(" IsAsync: {0}‎،‎ Command Text: ‎‎{1}"‎،‎ ‎interceptionContext.IsAsync،‎ command.CommandText));‎
        ‎            }‎
        ‎            public void ScalarExecuting(System.Data.Common.DbCommand ‎command،‎ ‎DbCommandInterceptionContext interceptionContext)‎
        ‎            {‎
        ‎                LogInfo("ScalarExecuting"‎،‎ String.Format(" IsAsync: {0}‎،‎ Command Text: ‎‎{1}"‎،‎ ‎interceptionContext.IsAsync،‎ command.CommandText));‎
        ‎            }‎
        ‎            private void LogInfo(string command،‎ string commandText)‎
        ‎            {‎
        ‎                Console.WriteLine("Intercepted on: {0} :- {1} "‎،‎ command،‎ commandText);‎
        ‎            }‎
        ‎        }

همان طور که در کد بالا می ببینید IDbCommandInterceptor برای اجرا شدن 6 متد را فراهم می کند.
اکنون برای پیکربندی interceptor شما می توانید این را با استفاده از فایل Config یا با کدنویسی این را انجام دهید.


Config file‏:‏
        ‎    < entityframework>‎
        ‎    ‎        < interceptors>‎
        ‎        ‎          < interceptor type="EF6DBFirstTahlildadeh.EFCommandInterceptor‎،‎ ‎EF6DBFirstTahlildadeh">‎
        ‎        < /interceptor>‎
        ‎    < /interceptors>‎
        ‎< /entityframework>‎
        Code-based config‏:‏
        ‎    public class FE6CodeConfig : DbConfiguration
        ‎        {‎
        ‎            public FE6CodeConfig()‎
        ‎            {‎
        ‎                this.AddInterceptor(new EFCommandInterceptor());‎
        ‎            }‎
        ‎        } 

خوب اکنون ما می توانیم هر زمانی که DbContext دستورات ExecuteNonQuery، ExecuteScalar، ExecuteReader را اجرا می کند، آنها را مشاهده کنیم.

  • 2722
  •    1214
  • تاریخ ارسال :   1394/07/27

دانلود PDF دانلود سورس کد دانشجویان گرامی اگر این مطلب برای شما مفید بود لطفا ما را در GooglePlus محبوب کنید
رمز عبور: tahlildadeh.com یا www.tahlildadeh.com
ارسال دیدگاه نظرات کاربران
شماره موبایل دیدگاه
عنوان پست الکترونیک

ارسال

آموزشگاه برنامه نویسی تحلیل داده
آموزشگاه برنامه نویسی تحلیل داده

تمامی حقوق این سایت متعلق به آموزشگاه تحلیل داده می باشد .