دسته بندی ها
08:27 1399/08/18

درج اطلاعات با SQL Bulk Insert در Entity Framework

مشخصات سوال کننده :
کاربر : mojtabahakimian     امتیاز کاربر : 155     رتبه کاربر : 10
دسته بندی : سی شارپ WPF Sql Server Entity Framework

به این سوال امتیاز بدهید    0
تعداد بازدید این سوال : 3626
هوش مصنوعی

پاسخ هوش مصنوعی

سلام!

بله، استفاده از SQL Bulk Insert یک روش مناسب و سریع برای درج تعداد زیادی رکورد در جداول SQL Server است. این روش به شما امکان می دهد که به طور همزمان چندین رکورد را ارسال کنید و به این ترتیب، عملکرد بهتری نسبت به درج تک تک رکوردها خواهد داشت.

برای استفاده از SQL Bulk Insert در Entity Framework، می توانید از کتابخانه های شخص ثالث مانند EFCore.BulkExtensions استفاده کنید. این کتابخانه به شما این امکان را می دهد که به راحتی این کار را انجام دهید.

در اینجا یک مثال ساده از نحوه استفاده از EFCore.BulkExtensions آورده شده است:

using System.Collections.Generic;
using System.Linq;
using Microsoft.EntityFrameworkCore;
using EFCore.BulkExtensions;

public class MyDbContext : DbContext
{
    public DbSet MyEntities { get; set; }
}

public class MyEntity
{
    public int Id { get; set; }
    public string Name { get; set; }
}

public class Program
{
    public static void Main()
    {
        using (var context = new MyDbContext())
        {
            var records = new List();
            for (int i = 0; i < 1000; i++)
            {
                records.Add(new MyEntity { Name = "Entity " + i });
            }

            context.BulkInsert(records);
        }
    }
}

در این مثال، ابتدا یک لیست از رکوردهای MyEntity ساخته می شود و سپس این لیست با استفاده از متد BulkInsert در دیتابیس درج می شود.

قبل از استفاده از این کتابخانه، حتماً آن را از NuGet نصب کنید:

Install-Package EFCore.BulkExtensions

موفق باشید!

به این پاسخ امتیاز بدهید    0
امتیاز: - رتبه: -
هوش مصنوعی

پاسخ هوش مصنوعی

بله، استفاده از SQL Bulk Insert یکی از بهترین روش ها برای درج داده ها به صورت دسته ای در SQL Server است و می تواند سرعت درج رکوردها را به طور قابل توجهی افزایش دهد.

برای استفاده از SQL Bulk Insert در Entity Framework، می توانید از کد زیر برای درج اطلاعات به صورت دسته ای استفاده کنید:

using (var context = new YourDbContext())
{
    var bulkInsertList = new List
    {
        new YourEntity { Property1 = value1, Property2 = value2 },
        new YourEntity { Property1 = value3, Property2 = value4 },
        // ... بیشتر رکوردها
    };
    
    context.BulkInsert(bulkInsertList);
}

برای استفاده از متد `BulkInsert`، نیاز دارید که از یک کتابخانه ای مثل EFCore.BulkExtensions استفاده کنید. این کتابخانه قابلیت Bulk Insert را برای Entity Framework Core فراهم می کند.

اگر از Entity Framework 6 استفاده می کنید، می توانید از کتابخانه BulkInsert استفاده کنید. روش کار مشابه است و تنها نیاز به اضافه کردن مراجع مناسب به پروژه تان دارید.

به این پاسخ امتیاز بدهید    0
امتیاز: - رتبه: -
پاسخ دهنده : fateme 16:32 1399/08/18

شما زمانی بهتر هست که از Sql Bulk استفاده کنید که حجم انبوهی از اطلاعات را دارید. به عنوان مثال اطلاعات 10 سال کارمندان یک شرکت بزرگ رو میخواید به صورت یکجا در یک دیتابیس جدید insert کنید. در این موقع بهتر هست که از bulk استفاده کنید. اما در استفاده معمول برای insert اطلاعات نیازی به bulk نیست.

 

در واقع میشه گفت وقتی شما حجم زیادی از اطلاعات رو از یک فایل میخواید وارد دیتابیس جدیدتون کنید اطلاعات از فایل کپی میشه داخل دیتابیس جدید.

 

در انتیتی فریم ورک در انتهای دستورات مربوط به دیتابیس همیشه از دستور SaveChanges استفاده میشه. خود این دستور در صورت نیاز عملیات bulk رو هم انجام میده.

Fastest Way of Inserting in Entity Framework

به این پاسخ امتیاز بدهید    0
امتیاز: 1635 رتبه: 2
2 نظر
mojtabahakimian : Optimize Inserting in SQL ?!

امتیاز کاربر : 155   رتبه کاربر : 10   تاریخ ثبت : 00:14 1399/08/19
mojtabahakimian : متشکر پس راهی وجود داره که بشه حالت عادی به Insert سرعت بخشید ؟

امتیاز کاربر : 155   رتبه کاربر : 10   تاریخ ثبت : 00:13 1399/08/19
برای ارسال پاسخ لطفا وارد حساب کاربری خود شوید.   ورود