[.NET EFCore] EFCore Postgresql Database First 예시
- C#
- 2022. 11. 26. 19:41
개요
- 이번 포스팅에서는 .NET Core 앱을 하나 생성 후, PostgreSQL 와 EF Core 를 Database First 방식으로 연동하는 방법에 대해서 알려 드립니다.
도구 & 프레임워크
- Visual Studio 2022
- .NET 6
- PostgreSQL Docker & pgAdmin
PostgreSQL 설치 및 pgAdmin 연동
- 제일 먼저 PostgreSQL 설치 및 pgAdmin 연동을 해야 합니다.
- 저 같은 경우에는 PostgreSQL 데이터베이스는 Docker 를 이용하여 실행해 주었고, pgAdmin 은 공식 홈페이지에서 설치 후 사용하였습니다.
- PostgreSQL 데이터베이스 docker-compose 내용은 다음과 같습니다.
version: "3.4"
services:
db:
image: postgres:latest
container_name: postgres
restart: always
ports:
- "5432:5432"
environment:
POSTGRES_USER: "beombeomjojo"
POSTGRES_PASSWORD: "1234"
volumes:
- C:\postgresql\data:/var/lib/postgresql/data
- pgAdmin 설치 및 연동 방법은 다음 URL 을 참고하시면 됩니다.
- https://jobeomhee.github.io/posts/PostgreSQL-GUI-%EB%8F%84%EA%B5%AC/
테스트 진행할 테이블 생성
- PostgreSQL 설치 및 pgAdmin 실행이 완료 되면, 테스트 진행할 테이블을 생성합니다.
- 예제로 tasks 라는 이름의 테이블을 생성합니다.
- 테이블 생성 SQL 구문은 아래 내용을 복사하여 적용하시면 됩니다.
CREATE TABLE tasks
(
id SERIAL PRIMARY KEY,
title VARCHAR(100) NOT NULL,
description VARCHAR(1000) NOT NULL,
is_completed BOLLEAN,
created_on TIMESTAMP NOT NULL
)
- 위 SQL 구문을 실행하면, 다음과 같이 tasks 이름의 테이블이 생성된 것을 확인할 수 있습니다.
ASP.NET Core 6 MVC Application 생성
- 데이터베이스에서 할 작업은 모두 마쳤습니다.
- Visual Studio 2022 를 실행 후,
ASP.NET Core 6 MVC Application
프로젝트 하나를 생성합니다.
PostgreSQL EFCore NuGet Package 추가
- EF Core를 사용하여 .NET 애플리케이션을 PostgreSQL과 연결하려면 PostgreSQL 데이터베이스 용 .NET Data Provider 가 필요합니다.
- 그러기 위해, NuGet 패키지 Npgsql.EntityFrameworkCore.PostgreSQL 을 설치합니다.
- 다음으로 기존 데이터베이스에 대한 EF 프록시 클래스를 생성하려면 Entity Framework Core Tools 가 필요합니다.
- EF Core용 패키지 관리자 콘솔 도구를 가져오려면 Microsoft.EntityFrameworkCore.Tools 패키지를 설치합니다.
- 지금까지 총 아래 그림과 같이 2개의 NuGet Package 를 설치하였습니다.
기존 데이터베이스에 대한 EF 프록시 생성
- 필요한 모든 NuGet 패키지를 설치했으므로 이제 기존 PostgreSQL 데이터베이스에 대한 EF 프록시 클래스를 생성할 시간입니다.
- Visual Studio로 이동하여
도구 > NuGet 패키지 관리자 > 패키지 관리자 콘솔
을 선택합니다. - 그리고 다음 명령을 실행합니다.
Scaffold-DbContext “Host=localhost;Database=ToDoManager;Username=DBUsername;Password=DBPassword” Npgsql.EntityFrameworkCore.PostgreSQL -OutputDir Models
- 위 명령어가 성공적으로 실행 되었다면,
Model
디렉터리가 다음과 같이 새롭게 생성된 것을 확인하실 수 있습니다.
Entity Framework를 사용하도록 .NET 앱 구성
- 이제 EF Core를 사용하도록 앱을 구성해 보겠습니다.
- appsettings.json 파일로 이동하여 아래와 같이 연결 문자열을 추가합니다.
- 아래에
ConnectionStrings
설정 키를 추가하고, 그 안에는MireroContext
키와 DB 정보의 Value 값을 추가해 주었습니다.
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
},
"AllowedHosts": "*",
"ConnectionStrings": {
"MireroContext": "Host=localhost;Database=mirero;Username=mirero;Password=system"
}
}
Program.cs
파일로 이동하여 종속성 주입을 위해 IoC Container 에 DBContext 를 등록해줍니다.
builder.Services.AddDbContext<MireroContext>(options =>
options.UseNpgsql(builder.Configuration.GetConnectionString("MireroContext")));
실행 확인
- 그럼 실제로 EF Core 와 Postgres 가 연동 되어
Tasks
테이블의 데이터를 정상적으로 가져오는지 확인합니다. - 테스트를 위해, Postgres 에서
Tasks
테이블에 1개의 데이터를 미리 삽입해 놓았습니다. - 그리고, C# 코드에서 데이터를 조회하여 출력 결과를 캡처하였습니다.
- 확인 결과, 정상적으로 DB 에 접근하여 데이터를 가져오는 것을 확인할 수 있습니다.
728x90
'C#' 카테고리의 다른 글
[C#] .NET6 WorkerService Serilog 사용하기 (0) | 2023.01.26 |
---|---|
[C# .NET Core] EFCore PostgreSQL CodeFirst 예제 (0) | 2022.11.29 |
[C# 디자인패턴] Factory Method 패턴 (0) | 2022.11.01 |
[C# 디자인 패턴] 재귀 제네릭을 사용한 Fluent Builder 패턴 (0) | 2022.10.31 |
[C# 디자인 패턴] 빌더 디자인 패턴 및 Fluent Builder (0) | 2022.10.28 |
이 글을 공유하기