3. MemoEngine 프로젝트의 Models 폴더에 MaximServiceRepository.cs라는 이름으로 클래스를 생성한다. 테이블과 모델 클래스를 바탕으로 데이터를 주고받는 기능을 한곳에 모아 보자. 리파지터리 패턴에 의해서 MaximServiceRepository 클래스를 다음과 같이 구현한다. 데이터베이스 처리 를 다루는 14장에서 사용했던 Micro ORM인 Dapper를 사용한다. 간단히 인라인 SQL 구문으로 데이터 입력, 출력, 수정, 삭제 구문을 만들었다.

    ▼  /Models/MaximServiceRepository.cs

    using Dapper;
    using System.Collections.Generic;
    using System.Configuration;
    using System.Data.SqlClient;
    using System.Linq;
    
    namespace MemoEngine.Models
    {
      /// <summary>
      /// 명언(Maxim) 서비스에 대한 DB 연동 코드 부분
      /// </summary>
      public class MaximServiceRepository
      {
          // Database 개체 생성
          private SqlConnection db;
          
          public MaximServiceRepository()
          {
              db = new SqlConnection(ConfigurationManager.ConnectionStrings[
                  “ConnectionString”].ConnectionString);
          }
          
          // 입력
          public Maxim AddMaxim(Maxim model)
          {
              string sql = @”
                    Insert Into Maxims (Name, Content) Values (@Name, @Content);
                    Select Cast(SCOPE_IDENTITY() As Int);
    ;
              var id = this.db.Query<int>(sql, model).Single();
              model.Id = id;
              return model;
          }
          
          // 출력
          public List<Maxim> GetMaxims()
          {
              string sql = @“Select Id, Name, Content, CreationDate 
                    From Maxims Order By Id Asc”;
              return this.db.Query<Maxim>(sql).ToList();
          }
          
          // 상세
          public Maxim GetMaximById(int id)
          {
              string sql = @“Select Id, name, Content, CreationDate 
                    From Maxims Where Id = @Id”;
              return this.db.Query<Maxim>(sql, new { Id = id }).SingleOrDefault();
          }
          
          // 수정
          public Maxim UpdateMaxim(Maxim model)
          {
              string sql = @“Update Maxims 
                    Set Name = @Name, Content = @Content Where Id = @Id”;
              this.db.Execute(sql, model);
              return model;
          }
          
          // 삭제
          public void RemoveMaxim(int id)
          {
              string sql = “Delete Maxims Where Id = @Id”;
              this.db.Execute(sql, new { id });
          }
      }
    }
    

    신간 소식 구독하기
    뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.