강의

멘토링

로드맵

Inflearn brand logo image

인프런 커뮤니티 질문&답변

이지석님의 프로필 이미지
이지석

작성한 질문수

14일만에 배우는 ASP.NET CORE

08. Email에 Unique Index 지정

Email Unique Index 지정 update 오류

해결된 질문

작성

·

99

0

안녕하세요. 8강 영상 보는 중에 add-migration 성공하고 그 다음에 막혀서 문의 드립니다.

update-database -project NetCore.Migrations

Build started...

Build succeeded.

System.InvalidOperationException: An error was generated for warning 'Microsoft.EntityFrameworkCore.Migrations.PendingModelChangesWarning': The model for context 'CodeFirstDbContext' has pending changes. Add a new migration before updating the database. See https://aka.ms/efcore-docs-pending-changes. This exception can be suppressed or logged by passing event ID 'RelationalEventId.PendingModelChangesWarning' to the 'ConfigureWarnings' method in 'DbContext.OnConfiguring' or 'AddDbContext'.

at Microsoft.EntityFrameworkCore.Diagnostics.EventDefinitio1.Log[TLoggerCategory](IDiagnosticsLogger1 logger, TParam arg)

at Microsoft.EntityFrameworkCore.Diagnostics.RelationalLoggerExtensions.PendingModelChangesWarning(IDiagnosticsLogger`1 diagnostics, Type contextType)

at Microsoft.EntityFrameworkCore.Migrations.Internal.Migrator.ValidateMigrations(Boolean useTransaction, String targetMigration)

at Microsoft.EntityFrameworkCore.Migrations.Internal.Migrator.Migrate(String targetMigration)

at Microsoft.EntityFrameworkCore.Design.Internal.MigrationsOperations.UpdateDatabase(String targetMigration, String connectionString, String contextType)

at Microsoft.EntityFrameworkCore.Design.OperationExecutor.UpdateDatabaseImpl(String targetMigration, String connectionString, String contextType)

at Microsoft.EntityFrameworkCore.Design.OperationExecutor.UpdateDatabase.<>c__DisplayClass0_0.<.ctor>b__0()

at Microsoft.EntityFrameworkCore.Design.OperationExecutor.OperationBase.Execute(Action action)

An error was generated for warning 'Microsoft.EntityFrameworkCore.Migrations.PendingModelChangesWarning': The model for context 'CodeFirstDbContext' has pending changes. Add a new migration before updating the database. See https://aka.ms/efcore-docs-pending-changes. This exception can be suppressed or logged by passing event ID 'RelationalEventId.PendingModelChangesWarning' to the 'ConfigureWarnings' method in 'DbContext.OnConfiguring' or 'AddDbContext'.

 

위 내용처럼 오류가 나오는데 해결 방법 문의 드립니다.

Visual studio 2022 Community

.NET 8.0

MSSQL 2022 development

환경에서 교육 듣고 있습니다.

참고로 그 전 강의에서 AddingUserTables는 Migration 생성 및 업데이트 잘 됐습니다.

답변 2

0

이지석님의 프로필 이미지
이지석
질문자

아래 내용 관련해서 일부 문제를 해결했습니다.

문제 생긴 과정을 요약해보면

  1. 프로젝트를 만들 때 이름을 잘못 입력해서 NetCore.Migrations로 이름을 변경함

  2. 빌드가 되지 않아서 솔루션에서 프로젝트 제거 후 폴더에서 기존 프로젝트 불러오기 함

  3. DLL이 없어서 오류가 발생했고, DLL을 복사본에 있는 이름이 같은 파일을 복사 붙여넣기 함

이런 과정에서 오류가 발생하여 프로젝트 속성에서 기본 출력 경로를 D:\NetCore:\NetCore.Web:\bin으로 강제 지정하여 솔루션 다시 빌드를 하니 DLL이 수정되었습니다

 

여기서 이제 궁금한게 기본 출력 경로를 고정해버리면 위치를 변경할 때마다 바꿔줘야 할 것 같아요.

그래서 생각하는게 NetCore.Web에 NetCore.Migrations 프로젝트가 연결되어야 할 것 같은데 기본 출력 경로를 변경하는 것 말고 기존 방법대로 복사 붙여넣기 한 DLL 파일을 연동하는 방법이 있을까요?

안된다면 기본 출력 경로를 강제하는 것 말고 다른 방법은 없을까요?

 

김정수님의 프로필 이미지
김정수
지식공유자

이지석님. 문제를 해결하셨다고 하니 다행입니다.

그런데, 일부 문제를 해결했다고 하셔서 조금 걱정이 되네요.

여전히 마이그레이션에 문제가 있다면 웹프로젝트 포함된 전체 소스 URL을 알려주시기 바랍니다.

(소유하고 계신 깃허브 주소를 알려주셨는데 웹프로젝트가 포함이 안되어 있네요. 확인 부탁드립니다.)


NetCore.V5.Services 프로젝트의 CodeFirstDbContextFactory 클래스에서 _configPath 변수에 "appsettings.json" 파일 위치 지정과 관련해 경로가 바뀌는 문제를 이야기하고 계신 듯 합니다.

이 부분은 아시다시피 DB 접속문자열을 가져오는 부분이기 때문에

optionsBuilder.UseSqlServer(new DbConnector(_configPath).GetConnectionString()); 대신에

optionsBuilder.UseSqlServer("DB접속문자열"); 이렇게 바로 접속문자열을 입력하셔도 됩니다.

단지, 이렇게 한다면 접속문자열 변경시 NetCore.V5.Services 프로젝트를 컴파일 및 빌드 후 게시해야 하는 불편함이 좀 있을 수는 있습니다.

이지석님의 프로필 이미지
이지석
질문자

네 해결되었습니다. 감사합니다!

김정수님의 프로필 이미지
김정수
지식공유자

다행이네요. 즐거운 하루되세요.

0

안녕하세요, 인프런 AI 인턴입니다. 이지석님.

현재 겪고 계신 문제는 .NET에서 Entity Framework Core를 사용할 때 발생하는 일반적인 오류 중 하나입니다. 이 오류는 데이터베이스 테이블 구조와 코드 상의 모델 구조 간에 차이가 있을 때 발생합니다.

문제를 해결하려면 아래의 단계를 따라야 합니다:

  1. 마이그레이션 생성: 오류 메시지에 “The model for context ‘CodeFirstDbContext’ has pending changes”라는 내용이 포함되어 있습니다. 이는 데이터베이스에 업데이트되지 않은 모델 변경 사항이 있다는 뜻입니다. Add-Migration 명령어를 사용하여 변경 사항을 포함하는 새로운 마이그레이션을 만들어야 합니다. 예:

    Add-Migration AddUniqueIndexToEmail
    
  2. 디비 업데이트: 새로 생성한 마이그레이션을 적용하기 위해 업데이트 명령을 실행해야 합니다. 이미 하신 것처럼 Update-Database 명령어를 실행합니다.

    Update-Database -project NetCore.Migrations
    
  3. 모델 변경 충돌 해결: 만약 여전히 오류가 발생한다면, DbContext에서 OnModelCreating 메소드 안에 있는 설정이 데이터베이스의 현재 상태와 일치하지 않을 수 있습니다. 코드를 검토하여 데이터베이스와 모델의 일관성을 유지하세요.

관련된 사례를 참고하고 싶다면, 다음의 인프런 질문 & 답변 링크를 방문해 보시는 것을 추천드립니다:
- “마이그레이션 완료 후 Update DB 에서 에러가 납니다 ㅠ”
- “Add-Migration 사용시 add-migration: ‘add-migration’이라는 용어는 cmdlet, 함수, 스크립트 파일 또는 작동 가능한 프로그램의 이름으로 인식되지 않습니다.”

제가 제공하는 답변이 여러분의 문제 해결에 도움이 되기를 바랍니다. 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏

이지석님의 프로필 이미지
이지석
질문자

1,2,3 방법으로 한 후에도 같은 에러가 발생합니다. 다른 해결 방법은 없을까요?

김정수님의 프로필 이미지
김정수
지식공유자

열심히 하시는 이지석님, 응원합니다. 진행이 안된다 하시는 소스를 보내 주시면 제가 분석해서 원인 파악하고 해결책을 알려드리는 지원이 가능할 듯 합니다.

방법 : 깃허브에 소스를 올리시고 링크를 제게 보내주세요. 제가 해결해 드리겠습니다.^^

감사합니다.

 

이지석님의 프로필 이미지
이지석
질문자

github.com/jiseok20/NetCore

깃허브에 올려놨습니다. 지원 부탁드립니다!

이지석님의 프로필 이미지
이지석

작성한 질문수

질문하기