더북(TheBook)

3. Models 폴더에 TechRepository 클래스를 생성하고 다음과 같이 작성한다. 생성자에서 IConfiguration 인터페이스 형식의 매개 변수를 받는다. IConfiguration 인터페이스 개체로 데이터베이스 연결 문자열을 appsettings.json 파일로부터 읽어 오는 코드가 포함되어 있다. SqlConnection 개체에 전달된 데이터베이스 연결 문자열을 바탕으로 데이터베이스 연결 개체를 생성하고, 이를 사용해 데이터 입력과 출력 메서드를 구현했다.

▼  /Models/TechRepository.cs

using Dapper;
using Microsoft.Extensions.Configuration;
using System.Collections.Generic;
using System.Data.SqlClient;
using System.Linq;

namespace DotNetNote.Models
{
  public class TechRepository : ITechRepository
  {
      private IConfiguration _config;
      private SqlConnection db;
       
      public TechRepository(IConfiguration config)
      {
          _config = config;
          
          // IConfiguration 개체를 통해서 
          // appsettings.json의 데이터베이스 연결 문자열을 읽어온다. 
          db = new SqlConnection(
              _config.GetSection("ConnectionStrings").GetSection(
                  "DefaultConnection").Value);
      }
      
      // 입력
      public void AddTech(Tech model)
      {
          string sql = "Insert Into Teches (Title) Values (@Title)";
          var id = this.db.Execute(sql, model);
      }
      
      // 출력
      public List<Tech> GetTechs()
      {
          string sql = "Select Id, Title From Teches Order By Id Asc";
          return this.db.Query<Tech>(sql).ToList();
      }
  }
}

 

이번 리파지터리 클래스에서도 인라인 SQL 구문을 사용해 InsertSelect를 구성했다. 그러나 SQL Server에 원하는 이름으로 저장 프로시저를 생성하고, 이를 통해서 접근하는 코드를 만들 수도 있다.

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