도구

Visual Studio 2019 - 도구 - Nuget 패키지 관리자 - 패키지 관리자 콘솔을 사용했습니다.

 

내용

EF Core를 사용하면서, 모델이 변경되면 마이그레이션을 해서 DB에 적용을 해주어야 합니다.

하나의 프로젝트(API, Client 등)에 모델링 코드와 DbContext가 함께 있다면

Add-Migration [마이그레이션 Alias]
Update-Database

이 두 코드로 모두 해결이 되겠지만,

저의 경우에는 API용 프로젝트(.net5 mvc api)가 하나, 모델/뷰모델을 관리하는
프로젝트(.net5 클래스 라이브러리)가 따로 있습니다.

그래서 위의 마이그레이션 코드로 진행하려 하니, 모델이 변경된게 없어 빈 마이그레이션 파일만 생성되었습니다.

 

저의 경우처럼 별도의 프로젝트에 모델링이 있는 경우 등에는 이 링크 를 참고하시면 자세하게 보실 수 있고,

제가 해결한 방법은 아래와 같습니다.


순서

  1. Context파일(db context)을 라이브러리 프로젝트로 옮기기
  2. 데이터 모델파일들도 라이브러리 프로젝트로 옮기기
  3. Add-Migration, Update-database 등 DB적용 스크립트를 실행 할 때 -StartUpProject, -Project등 설정해주기

스크립트

마이그레이션 적용

Add-Migration [마이그레이션 이름]
-Project [클래스라이브러리프로젝트이름]
-StartupProject [실제웹어플리케이션프로젝트이름] 
-c [클래스라이브리이름.네임스페이스.Context이름]

 

데이터베이스에 적용

Update-Database 
-Project [클래스라이브러리프로젝트이름]
-StartupProject [실제웹어플리케이션프로젝트이름]
-Context [클래스라이브리이름.네임스페이스.Context이름]

 

✔ 위의 스크립트들은 보기 편하려고 여러줄에 걸쳐 사용했지만, 한 줄에 모아서 사용하는걸 추천합니다.

'개발 > ASP.NET Core' 카테고리의 다른 글

닷넷 코어 Connection String 사용하기  (0) 2017.03.11
*먼저 해당 블로그에서 참고하여 테스트 후 글을 작성하였습니다. 참고바랍니다.


ASP.NET Core 웹 어플리케이션에서는 기존의 닷넷 프레임워크와는 다르게 설정파일을 작성합니다.

기존의 닷넷 프레임워크 웹 어플리케이션에서는 IIS에서만 동작하기 때문에 SQL Server와의 통신을 위해

Web.Config파일을 통해 Connection String을 작성하고 사용하였는데,

닷넷 코어 웹 어플리케이션에서는 여러 플랫폼 위에서 동작하기 때문에 다른 방식을 사용하였습니다.


현재 docs.microsoft.com 에서는 SQL Server와의 연결을 위해 EntityFrameworkCore를 추가해

DBContext를 추가하는 방식으로 소개하고 있습니다.

(닷넷 코어에서는 사용하고 싶은게 있으면 일일이 찾아서 누겟으로 추가해 주어야 합니다....)


저는 EntityFramework를 사용하고 싶지 않아 이렇게 하는게 아닌 다른 방식을 찾아보았습니다.

하여 위의 블로그에서 찾아본 방법을 소개합니다.

생성자를 이용하는 방식이기 때문에 추후 해당 방식이 아닌 다른 방식으로 사용할 수 있는 방법이 있으면

추가로 포스팅을 진행하겠습니다.


진행하시기 전에 

"Microsoft.Extensions.Options.ConfigurationExtensions"

NugetPackage를 설치하셔야 합니다.

패키지 설치 후 appsettings.json 파일에 Connection String관련 내용을 추가합니다.




위의 Logging은 프로젝트 생성 시 WebAPI이나 MVC 템플릿으로 생성 시 자동으로 들어가 있습니다.

밑의 AppSetting 노드를 추가하고 Connection String 내용을 추가합니다.


프로젝트의 루트에 AppSettings 클래스를 추가합니다.



클래스 내부의 내용을 위에서 추가한 appsettings.json의 이름과 동일하게 작성합니다.




Startup.cs에 appsetting.json에서 AppSettings 노드를 찾아 해당 내용을 가져와 추가합니다.




추가 후 Startup.cs에 appsettings.json 파일을 가져오는 부분이 누락되었나 확인합니다.



내용 추가가 완료된 startup.cs 파일 내용입니다. 저는 WebAPI 템플릿으로 프로젝트를 생성하였기 때문에

mvc 관련 내용들도 기본으로 추가되어 있습니다.


컨트롤러에 AppSetting을 프로퍼티로 가져옵니다.



컨트롤러 생성자에 해당 세팅을 IOption으로 가져와 값을 설정해 줍니다.



해당 컨트롤러의 생성자로 진입 시 값이 들어오는 것을 확인하실 수 있습니다.



해당 연결 문자열으로 DB 서버 연결 등에 사용하시면 됩니다.


내용을 보시고 이러면 안될 것 같은데, 다른 좋은 방법이 있는데 하시는 분들은 의견 주시면 수정하도록 하겠습니다.

+ Recent posts