افزایش سرعت Insert کردن رکورد ها در MVC

افزایش سرعت Insert کردن رکورد ها در MVC

بسم الله الرحمن الرحیم





در این آموزش می خواهیم با روش جدید Insert کردن رکوردهایی با تعداد بالا به وسیله MVC آشنا کنیم و همچنین نحوه افزایش سرعت Insert کردن را فرا بگیریم.


EntityFramework.BulkInsert


یک extension برای Entity framework 4 به بالا است که سرعت Insert کردن شما در insert های عظیم تا 20 برابر افزایش می دهد.
این extension از روش Code First و Database First پشتیبانی می کند.

بسم الله الرحمن الرحیم





در این آموزش می خواهیم با روش جدید Insert کردن رکوردهایی با تعداد بالا به وسیله MVC آشنا کنیم و همچنین نحوه افزایش سرعت Insert کردن را فرا بگیریم.


EntityFramework.BulkInsert


یک extension برای Entity framework 4 به بالا است که سرعت Insert کردن شما در insert های عظیم تا 20 برابر افزایش می دهد.
این extension از روش Code First و Database First پشتیبانی می کند.

Entity Framework

برای نصب این افزونه کافی است در Package Manager Console دستورات زیر را اجرا کنید 

Nuget


نسخه EF4

PM> Install-Package EntityFramework.BulkInsert-ef4

https://www.nuget.org/packages/EntityFramework.BulkInsert-ef4


نسخه EF5

PM> Install-Package EntityFramework.BulkInsert-ef5

https://www.nuget.org/packages/EntityFramework.BulkInsert-ef5


نسخه EF6

PM> Install-Package EntityFramework.BulkInsert-ef6

https://www.nuget.org/packages/EntityFramework.BulkInsert-ef6

پشتیبانی

  1. تمامی نسخه های Entity Framework  موجود در nuget

  2.     Code-First

  3.     Database-First (از نسخه Entity Framework 6.0.0)

  4.     Table-Per-Hirerachy

  5.     Table-Per-Type


روش استفاده

برای استفاده از این افزونه باید آن را در کلاس خود using کنید

using EntityFramework.BulkInsert.Extensions;

قسمت پیچیده کار برای درج اطلاعات :)

context.BulkInsert(entities);



دستور زیر بلافاصله پس از فراخوانی درون transaction خود اجرا می شود. برای ترکیب کردن Bulk و DbContext باید از TransactionScope استفاده کنید.

using (var ctx = GetContext())
{
  using (var transactionScope = new TransactionScope())
  {
    // some stuff in dbcontext

    ctx.BulkInsert(entities);

    ctx.SaveChanges();
    transactionScope.Complete();
  }
}

نظرات

  • Hannah Martinez
    neda
    دو شنبه 11 دی 1278 - 0:00

    ممنون از سایت و مطالب خوبتون. یک سوال: کجاها باید از bulkinsert استفاده کنیم و کجاها نباید استفاده کنیم؟

    برای بهبود کارایی و سرعت entity در یک سایت پربازدید با تراکنش بالا با پایگاه داده چه توصیه هایی دارید؟

    • Judith Bell
      پاسخ
      اسماعیلشیدایی
      دو شنبه 11 دی 1278 - 0:00

      با سلام

      بیان کردن این مطالب و ارائه راه حل نیازمند داشتن علم در خصوص موارد استفاده آن است زیرا هر پروژه ساختار و اطلاعات خاص خود را دارد، از همین رو به سادگی نمی توان با یک بحث کلی این موارد مشخص کرد، اما شاید خواندن کسب کردن اطلاعات در خصوص Entity Framework و Database ها بتواند بسیار به شما کمک کند.
      این مبحث نیز یکی از مواردی است که بنده سعی کردم در آموزش ها به آن بپردازم، شاید دنبال کردن این مطالب بتواند به شما کمک کند انشالله در آینده قصد دارم یک پروژه کامل را از نقاط مختلف مورد بررسی قرار دهم.
      http://ably.ir/post/Entity-Framework

  • Hannah Martinez
    رامین علیرضایی
    دو شنبه 11 دی 1278 - 0:00

    با سلام
    این روش خوب جواب میده ولی یک مشکل بزرگ هست و اون هم اینه که برای SQL Server فقط کارایی داره و با دیتابیسهای دیگه کار نمیکنه. مثلا شما نمیتونی این روش را بر روی SQL CE اجرا کنی. البته تا این لحظه.
    از مطالب خوبتان سپاسگذارم.

    • Judith Bell
      پاسخ
      اسماعیلشیدایی
      دو شنبه 11 دی 1278 - 0:00

      ممنون از نکته ای که به آن اشاره کردید

  • Hannah Martinez
    شهروز
    دو شنبه 11 دی 1278 - 0:00

    سلام 

    به نظرم عنوان مطلب زیاد (MVC) زیاد با خود مطلب مرتبط نیست

    • Judith Bell
      پاسخ
      اسماعیلشیدایی
      دو شنبه 11 دی 1278 - 0:00

      بله حق با شما است باید نام Entity Framework جایگزین MVC می شد!
      ممنون

نظرات یا سوالات خودرا با ما درمیان بگذارید

0912 097 5516 :شماره تماس
0713 625 1757 :شماره تماس