ably ably برای هدایت شدن به سایت جدید اینجا کلیک کنید

آموزش برنامه نویسی

آموزش برنامه نویسی وب، اندروید، ویندوز , اسکیوال و...
Tell: 0912 097 5516
| Email: Hello@EduOnline.ir

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

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





در این آموزش می خواهیم با روش جدید 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();
  }
}

نظرات (۳)

سلام 
به نظرم عنوان مطلب زیاد (MVC) زیاد با خود مطلب مرتبط نیست
پاسخ:
بله حق با شما است باید نام Entity Framework جایگزین MVC می شد!
ممنون
  • رامین علیرضایی
  • با سلام
    این روش خوب جواب میده ولی یک مشکل بزرگ هست و اون هم اینه که برای SQL Server فقط کارایی داره و با دیتابیسهای دیگه کار نمیکنه. مثلا شما نمیتونی این روش را بر روی SQL CE اجرا کنی. البته تا این لحظه.
    از مطالب خوبتان سپاسگذارم.
    پاسخ:
    ممنون از نکته ای که به آن اشاره کردید
    ممنون از سایت و مطالب خوبتون. یک سوال: کجاها باید از bulkinsert استفاده کنیم و کجاها نباید استفاده کنیم؟
    برای بهبود کارایی و سرعت entity در یک سایت پربازدید با تراکنش بالا با پایگاه داده چه توصیه هایی دارید؟
    پاسخ:
    با سلام

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

    ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
    شما میتوانید از این تگهای html استفاده کنید:
    <b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
    تجدید کد امنیتی
    up
    ما را در گوگل محبوب کنید