DevSight

CRUD using BULK Operation in ASP.NET

대용량의 데이터를 한 번에 입력, 수정, 삭제할 때 대부분의 개발자는 ‘for’와 같은 루프 문을 사용하여 이를 처리하는 데 처리할 ‘row’의 개수만큼 operation이 발생하므로 RDBMS가 SQL Server의 경우 Bulk Operation 기법을 사용하여 한 번에 처리하도록 해야 한다.

또는 Table 변수를 사용하여 한 번에 모든 데이틀 넘겨주고 데이터베이스에서는 이를 한 번의 로직으로 처리하도록 유도해야 한다.

소스 예제는 ‘Thumb IKR - Programming Examples’의 유튜브 강좌를 참고하였고 일부 소스는 수정하였다. VS2019에서 ASP.NET Core 웹 애플리케이션(MVC) 프로젝트를 생성하고 기본값을 그대로 사용하였으며 변경된 부분의 코드 위주로 아래에 소소를 나열하였다.

추가한 nuget package는 RepoDb.SqlServerRepoDb.SqlServer.BulkOperations이다(repodb.net).

appsettings.json
1
2
3
4
5
{
  "ConnectionStrings": {
    "testdb": "Server=아이피주소;Database=디비;User Id=아이디;Password=패스워드;"
  }
}
Student.cs (모델)
1
2
3
4
5
6
7
8
9
namespace BulkCRUD.Models
{
    public class Student
    {
        public int StudentID { get; set; }
        public string Name { get; set; }
        public string Roll { get; set; }
    }
}
Read More ···