Entity Framework와 함께 PostgreSQL을 사용하도록 ASP.NET Core Web Application 프로젝트를 변환하십시오.
이를 통해 MacOS 또는 Linux 대상에서 VS 코드를 사용하여 ASP.NET 핵심 프로젝트를 개발할 수 있습니다.
이 프로젝트는 Visual Studio 2022 (버전 17.4)의 .NET 7.0 대상 프레임 워크, ASP.NET Core Web Application MVC 프로젝트 스캐 폴드를 사용합니다.

이 저장소에서 이미 프로젝트 설정이 완료되었습니다. 환경 설정 보장; 그런 다음 솔루션을 실행하십시오.
이 프로젝트에는 PostgreSQL이 필요합니다. 설치 지침은 아래에 제공됩니다.
Visual Studio Code를 사용하는 경우 터미널에서 다음 명령을 발행하여 ASP.NET Core Developer 인증서를 생성해야합니다.
dotnet dev-certs https --clean
dotnet dev-certs https
명령 줄 database ef 명령의 경우 엔티티 프레임 워크 핵심 도구 .NET CLI를 설치해야합니다.
dotnet tool install --global dotnet-ef
아래에서 지침은 ASP.NET Core 프로젝트에서 PostgreSQL을 사용하도록 참조됩니다.
asp.net 웹 응용 프로그램에 Npgsql.EntityFrameworkCore.PostgreSQL nuget 패키지를 설치하십시오.
이렇게하려면 다음을 수행하여 dotnet 명령 줄을 사용할 수 있습니다.
$ dotnet add package Npgsql.EntityFrameworkCore.PostgreSQL --version 3.1.2
또는 프로젝트의 .csproj 파일을 편집하고 PackageReference 항목 그룹에 다음 줄을 추가하십시오.
< PackageReference Include = " Npgsql.EntityFrameworkCore.PostgreSQL " Version = " 3.1.2 " /> Project의 AppSettings.json에서 연결 문자열을 구성하여 username , password 및 dbname 적절하게 대체합니다.
"ConnectionStrings" : {
"DefaultConnection" : " User ID=username;Password=password;Server=localhost;Port=5432;Database=dbname;Integrated Security=true;Pooling=true; "
}, Inside Program.cs UseSqlServer 옵션을 UseNpgsql 로 대체합니다.
builder . Services . AddDbContext < ApplicationDbContext > ( options =>
options . UseNpgsql ( connectionString ) ) ; 솔루션을 실행하기 전에 엔티티 프레임 워크 마이그레이션을 실행하십시오.
ASP.NET 코어 템플릿으로 인해 초기 마이그레이션이 실패 할 수 있습니다.
마이그레이션을 실행하려고 할 때 다음과 같은 오류가 표시 될 수 있습니다.
npgsql.postgresexception (0x80004005) : 42704 : 유형 "nvarchar"는 존재하지 않습니다
System.NullReferenceException : 객체 참조는 객체의 인스턴스로 설정되지 않습니다.
System.InvalidOperationException : CLR 유형 'bool'을 사용하여 'microsoft.aspnetcore.identity.identityuser.twofactorenabled'에 대한 관계 유형에 대한 매핑은 찾을 수 없습니다.
전체 마이그레이션 폴더를 삭제하고 새로운 비교 마이그레이션을 재생하십시오.
Visual Studio 패키지 관리자 콘솔을 사용하여 새 마이그레이션을 생성합니다 (메뉴 : 도구 -> Nuget 패키지 관리자 -> 패키지 관리자 콘솔) :
PM> Add-Migration
또는 Dotnet Cli를 통해 명령 줄에서 :
$ dotnet ef migrations add Initial
DotNet 마이그레이션 도구가 존재하지 않으면 환경 설정에서 위의 명령을 사용하여 도구를 설치하십시오.
Visual Studio 패키지 관리자 콘솔을 사용하여 마이그레이션을 실행하십시오 (메뉴 : 도구 -> Nuget 패키지 관리자 -> 패키지 관리자 콘솔) :
PM> Update-Database
또는 Dotnet CLI를 통한 명령 줄에서 .csproj 파일이있는 프로젝트 디렉토리 내에서 다음 명령을 실행합니다.
$ dotnet ef database update
마이그레이션을 실행하면 데이터베이스가 생성되고 웹 응용 프로그램이 실행될 준비가되었습니다.
다음은 홈브류를 사용하여 Mac에서 PostgreSQL 서버를 설정하는 지침입니다.
Brew를 사용하여 PostgreSQL을 설치 한 다음 서비스를 시작하십시오.
$ brew install postgresql
$ brew services start postgresql
username 원하는 새 사용자 이름 인 터미널에서 createuser 명령을 사용하여 사용자를 만듭니다. -P 인수를 사용하면 비밀번호를 설정하라는 메시지가 표시됩니다.
$ createuser username -P
dbname 원하는 새 데이터베이스 이름 인 터미널에서 createdb 명령을 사용하여 데이터베이스를 만듭니다.
$ createdb dbname
현재 솔루션의 엔티티 프레임 워크 마이그레이션을 실행하십시오 (지침은 위 참조).
PostgreSQL 대화식 터미널을 시작하고 데이터베이스에 연결하십시오.
$ psql dbname
PostgreSQL 인터페이스 터미널에서 dt 명령을 사용하여 테이블을 나열하십시오.
dbname=# dt
List of relations
Schema | Name | Type | Owner
--------+-----------------------+-------+--------------
public | AspNetRoleClaims | table | username
public | AspNetRoles | table | username
public | AspNetUserClaims | table | username
public | AspNetUserLogins | table | username
public | AspNetUserRoles | table | username
public | AspNetUserTokens | table | username
public | AspNetUsers | table | username
public | __EFMigrationsHistory | table | username
(8 rows)
데이터베이스를 작성하는 동안 권한이 제대로 설정되지 않은 경우 dbname 이 데이터베이스 이름이고 username 생성 한 사용자입니다.
$ psql dbname
dbname=# GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO username;