آموزش برنامه نویسی ، پایگاه داده sql server
آموزشگاه برنامه نویسی تحلیل داده : دوره های آموزشی برنامه نویسی و طراحی وب ASP.Net , C# , HTML , CSS , SQL Server


آموزشگاه برنامه نویسی مجتمع فنی تهران میرداماد : دوره های آموزشی برنامه نویسی و طراحی وب ASP.Net , C# , HTML , CSS , SQL Server

آموزش ADO.NET > کار با اشیای داده ای ADO.NET > مدیریت رویدادها ( Events ) شی DataSets

مدیریت رویدادها ( Events ) شی DataSets

شی DataSet دارای 3 رویداد یا Event مهم و کاربردی است که در این بخش به تشریح و نحوه استفاده از آنها خواهیم پرداخت .
این 3 رویداد عبارتند از :

  • Disposed .
  • Initialized .
  • MergeFailed .

رویداد MergeFailed :

مهم ترین رویداد شی DataSet رویداد MergeFailed است و زمانی اتفاق می افتد که ساختار و Schema اشیای DataSet که قرار است با هم ادغام شوند ، متفاوت بوده و باهم در تضاد باشند . این مسئله زمانی اتفاق می افتد که دو شی DataRow در جدول مبدا و مقصد دارای کلید اصلی یکسان بوده و مقدار خاصیت EnforceConstraints آن نیز بر روی true تنظیم شده باشد . برای مثال فرض کنید کلید اصلی جدول CustID و جدول OrderID از یک شی DataSet دیگر هر دو  یکسان بوده و بخواهیم این شی را باهم ادغام نماییم .
شی MergeFailedEventArgs در هنگام بروز این رویداد به آن ارسال شده و دارای 2 خاصیت زیر است :

  • خاصیت Conflict : این خاصیت ،  علت خطا در ساختار دو شی  DataSet که باعث بروز خطا در پروسه ادغام شده را تعیین می کند .
  • خاصیت Table : این خاصیت نیز نام جدولی که بین دو شی در تضاد است را تعیین می کند .

مثال عملی : در مثال زیر ، یک تابع را برای مدیریت رویداد MergeFailed یک شی DataSet نوشته ایم .
این تابع علت بروز خطا در ادغام و نام جدولی که باعث ایراد شده است را در خروجی نمایش می دهد :

VB کد AddHandler workDS.MergeFailed, New MergeFailedEventHandler( AddressOf DataSetMergeFailed )

Private Shared Sub DataSetMergeFailed( sender As Object,args As MergeFailedEventArgs)
   Console.WriteLine("Merge failed for table " & args.Table.TableName)
   Console.WriteLine("Conflict = " & args.Conflict)
End Sub
C# کد workDS.MergeFailed += new MergeFailedEventHandler( DataSetMergeFailed ) ;

private static void DataSetMergeFailed( object sender, MergeFailedEventArgs args )
   {
       Console.WriteLine("Merge failed for table " + args.Table.TableName );
       Console.WriteLine("Conflict = " + args.Conflict );
    }

رویداد Initialized :

این رویداد زمانی اتفاق می افتد که تابع سازنده DataSet یک نمونه جدید از این شی را می سازد . در صورت موفقیت در ساخت شی ، تابع مقدار ture و در صورت عدم موفقیت مقدار false را برمی گرداند .
نکته : این رویداد خود دارای 2 رویداد زیر مجموعه به نام های BeginInit و  EndInit  می باشد . رویداد BeginInit مقدار تابع Initialized را False کرده و سپس پس از انجام کار رویداد EndInit  آن را true می کند . لازم به ذکر است که این رویدادها توسط ویرایشگر ویژوال استودیو استفاده شده و معمولا در کدنویسی بصورت مستقیم استفاده نمی شود .

رویداد Disposed :

شی DataSet از کلاس MarshalByValueComponent ایجاد شده که این کلاس هم متد Dispose و هم رویداد Disposed را فعال می کند . از رویداد Disposed می توانید برای ایجاد یک مدیریت کننده رویداد ( Event Handler ) جهت توجه به رویداد متد Disposed استفاده کنید . همچنین از این رویداد می توانید برای اجرای کدهای مورد نظرخود در هنگام فراخوانی متد  Dispose استفاده نمایید .
متد Dispose منابع نرم افزاری و سخت افزاری که توسط کلاس  MarshalByValueComponent استفاده می شود را آزاد می کند .



راجع این مطلب سوال یا اشکالی دارید ؟! آن را در انجمن سایت مطرح نمایید ...         >>>>>  ورود به انجمن تخصصی


نطر خودتان درباره این صفحه را با ما در میان گذاشته و در صورت تمایل از Developer1 حمایت نمایید :

آیا مطالب این صفحه برای شما مناسب و مفید بوده است :

نام :                 
آدرس Email :    
 
نظر شما :  
 
سوال امنیتی : پایتخت ایران ؟