Dapper 를 사용하더라도, EF core 의 디자인 도구를 사용하는 것이 업무 효율적이니, 참고하세요.
기축 DB 테이블로부터 맵핑 객체(Entity 클래스) 생성하기
Reverse Engineering - EF Core | Microsoft Learn
권한이 있는 연결 문자열만 얻을 수 있으면 휴먼 에러 없이, DB의 테이블로부터 맵핑 객체를 모두 생성할 수 있습니다.
다만, 데이터 베이스 View와 저장 프로시저가 반환하는 모델은 안 되는 한계가 있어, 수작업으로 처리해야 합니다.
Entity 클래스로 DB 생성/관리하기
Getting Started - EF Core | Microsoft Learn
엔티티 클래스의 변경이 있을 때 마다, 이를 휴먼 에러 없이 DB에 반영할 수 있습니다.
// 변경 전
public class Class
{
public string Name {get; set;}
}
// 변경 후
public class Class
{
public string Name { get; set; }
public int Capacity { get; set; }
}
위 변경을 DB의 “Classes” 테이블에 반영하려면, 아래 두 가지 명령어로 끝납니다.
dotnet ef migrations add Added-Class.Capacity
migration은 git의 commit 과 유사한 개념입니다.
“Added-Class.Capacity” 는 마이그레이션 이름으로, (깃 커밋 Id + 커밋 메시지)의 개념입니다.
dotnet ef database update {마이그레이션 이름}
git push 와 유사한 개념으로, 마이그레이션을 DB에 반영합니다.
마이그레이션 이름을 지정해야 하지만, 지정하지 않으면 가장 마지막 마이그레이션(Added-Class.Capacity)이 자동으로 선택됩니다.
DB 업데이트
사실 EF Core 의 디자인 도구는 마이그레이션을 DB 에 반영하는 여러 가지 수단을 제공합니다.
그 중에 하나가 위에 소개한 database update 명령어 입니다.
이 명령은 개발 중 엔티티 클래스가 추가될 때마다, db 도 함께 업데이트 하는데 편리하기에, 기본적으로 많이 사용합니다.
아래 링크에 보시면, 두 가지 수단이 더 있음을 알 수 있습니다.
Applying Migrations - EF Core | Microsoft Learn
-
마이그레이션 => Sql 스크립트.
DBA 검토 용.
-
마이그레이션 => 실행파일(Bundle).
개발자가 아닌, 쿼리를 모르는 제 3자(고객)가 운영 DB를 생성할 때 사용.
참고
EF Core 로 생성된 DB에 쿼리를 날리기 위해 반드시 EF Core를 써야하는 것은 아닙니다.
DB를 생성하기 위해 EF 코어의 DB 디자인 도구를 사용했을 뿐, 생성된 DB는 그냥 DB인 것이죠.
그래서, 쿼리를 보낼 때는 원하는 수단 아무거나, 예를 들면, Dapper 를 사용하면 됩니다.
다만, EF Core 와 관련한 학습이 조금 필요한데, 업무 효율성 측면에서, 충분히 가치 있는 투자라고 생각합니다.