افزایش سرعت Insert کردن رکورد ها در MVC
بسم الله الرحمن الرحیم
در این آموزش می خواهیم با روش جدید Insert کردن رکوردهایی با تعداد بالا به وسیله MVC آشنا کنیم و همچنین نحوه افزایش سرعت Insert کردن را فرا بگیریم.
EntityFramework.BulkInsert
یک extension برای Entity framework 4 به بالا است که سرعت Insert کردن شما در insert های عظیم تا 20 برابر افزایش می دهد.
این extension از روش Code First و Database First پشتیبانی می کند.
برای نصب این افزونه کافی است در 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
پشتیبانی
-
تمامی نسخه های Entity Framework موجود در nuget
-
Code-First
-
Database-First (از نسخه Entity Framework 6.0.0)
-
Table-Per-Hirerachy
-
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();
}
}
نظرات (۳)
بله حق با شما است باید نام Entity Framework جایگزین MVC می شد!
ممنون
این روش خوب جواب میده ولی یک مشکل بزرگ هست و اون هم اینه که برای SQL Server فقط کارایی داره و با دیتابیسهای دیگه کار نمیکنه. مثلا شما نمیتونی این روش را بر روی SQL CE اجرا کنی. البته تا این لحظه.
از مطالب خوبتان سپاسگذارم.
ممنون از نکته ای که به آن اشاره کردید
با سلام
بیان کردن این مطالب و ارائه راه حل نیازمند داشتن علم در خصوص موارد استفاده آن است زیرا هر پروژه ساختار و اطلاعات خاص خود را دارد، از همین رو به سادگی نمی توان با یک بحث کلی این موارد مشخص کرد، اما شاید خواندن کسب کردن اطلاعات در خصوص Entity Framework و Database ها بتواند بسیار به شما کمک کند.
این مبحث نیز یکی از مواردی است که بنده سعی کردم در آموزش ها به آن بپردازم، شاید دنبال کردن این مطالب بتواند به شما کمک کند انشالله در آینده قصد دارم یک پروژه کامل را از نقاط مختلف مورد بررسی قرار دهم.
http://ably.ir/post/Entity-Framework