شما اینجا هستید: خانه / مقالات آموزشی / کتابخانه ی Entity Framework Extended – حذف و ویرایش دسته ای

کتابخانه ی Entity Framework Extended – حذف و ویرایش دسته ای

در مطلب قبل با امکانات کتابخانه ی Entity Framework Extended و نحوه ی اضافه کردن آن به پروژه آشنا شدیم. در این مطلب به پیاده سازی یکی از کاربردی ترین قابلیت های این کتابخانه یعنی “حذف و ویرایش دسته ای” می پردازیم.

همانطور که در مقدمه بیان شد، هنگام استفاده از Entity Framework برای اعمال Update و Delete بر روی رکورد های دیتابیس، ابتدا باید Entity مربوطه را بازیابی کرده و سپس آن را حذف و یا ویرایش نمایید. این عمل نیازمند اجرای دو Query می باشد و هنگامی که شما قصد ویرایش و یا حذف تعدادی زیادی رکورد دارید، بازدهی آن به شدت پایین است. مثال های زیر حذف و ویرایش دسته ای به صورت معمول را نشان می دهد.

حذف دسته ای :

Query های ساخته شده توسط EF جهت حذف :

 

ویرایش دسته ای :

Query های ساخته شده توسط EF جهت ویرایش :

 

استفاده از امکانات Entity Framework Extended جهت اعمال حذف و ویرایش دسته ای :

Query های ساخته شده توسط این کتابخانه :

 

همانطور که مشاهده میکنید عملیات حذف و ویرایش دسته ای به راحتی و با اجرای یک Query بر روی دیتابیس اعمال می شود که باعث کاهش Round-Trip (تعداد دفعات مراجعه) به پایگاه داده شده و می تواند تاثیر بسزایی در بازدهی نرم افزار شما داشته باشد.

نکته : باید توجه داشت در این حالت، Commit شدن Transaction بلافاصله پس از صدا زدن Method های Delete و Update رخ می دهد. بدین معنا که حتی اگر SaveChange بر روی DbContext فراخوانی نشود، Transaction فوق Commit شده و قابل Rollback نخواهد بود. برای حل این مشکل می توانید از کلاس TransactionScope جهت مدیریت Transaction استفاده کنید.

 

در این مطلب به بررسی قابلیت “حدف و ویرایش دسته ای” با استفاده از امکانات Entity Framework Extended پرداختیم. در مطلب بعدی به بررسی Future Query ها و ارسال چند Query و دریافت همزمان نتیجه ی آنها از پایگاه داده میپردازیم.

درباره هادی احمدی

هادی احمدی
برنامه نویس، تحلیلگر و طراح نرم افزار که به فعالیت بر روی بسترهای نرم افزاری مایکروسافت مشغول هستم. علاقه مند به مباحث طراحی و معماری نرم افزار و همچنین پیاده سازی سیستم های اطلاعاتی پیچیده می باشم.

6 نظر

  1. سلام هادی
    مطلب جالبی بود. تو وب در مورد تقابل EF و NHibernate خیلی مطالب خوبی هست. بنظرم اومد منم کدهای NHibernate مثال هایی که میزنی کامنت بزارم ولی نمی دونم چطور تو کامنت کد بنویسم.
    این لینک عملیات دسته ای در NHibernate توضیح داده:
    https://sites.google.com/site/rnxnhibernate/blog/batchprocessinginnhibernate

    • هادی احمدی

      سلام ناصر جان
      ممنونم، لینک جالبی بود مطالعه کردم.
      قصد دارم در آینده یک سری مطالب آموزشی در مورد NHibernate و همینطور تفاوت هاش با EF بنویسم.

  2. سلام
    در استفاده از این دو امکان پرکاربرد در نرم افزارها، (البته در جای خود)، نحوه چک کردن قطع ارتباط با سرویس دهنده را با چه روشی میشه حلش کرد؟ البته آقای نصیری در صورت استفاده از DaveChaneg این مورد رو در سایت خودشون توضیح دادند ولی در استفاده از این دو امکان این مشکل رو چطوری میشه بصورت آلارم به کاربر نمایش داد ؟ (البته قصد ما با یک رفت وبرگشت به سرور می باشد نه بیشتر).
    با تشکر.

    • هادی احمدی

      سلام
      خطاهای عدم دسترسی به دیتابیس در حذف و ویرایش دسته ای با حالت معمولی تفاوتی ندارند. یعنی در صورتی که دیتابیس شما خارج از دسترس باشد، اجرای Delete و Update در BatchExtensions همان خطایی را به شما بر میگرداند که Remove و SaveChanges بر میگرداند. به همین دلیل شما از همان روال قبلی Exception Handling برای فهمیدن قطعی ارتباط می توانید استفاده کنید.

  3. نیما حمیدان

    جناب احمدی آیا کتابخانه ایی برای بحث ثبت دسته ایی اطلاعات می شناید ؟ متد InsertRange درخود EF بر روی ثبت مقادیر بالا به شدت مند می باشد

دادن پاسخ بههادی احمدی بی خیال پاسخ!

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

*

شما می‌توانید از این دستورات HTML استفاده کنید: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">

رفتن به بالا