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 });
}
}
}