programing

마이그레이션을 추가해도 작동하지 않고 유용한 오류 메시지가 표시되지 않음

starjava 2023. 6. 16. 21:16
반응형

마이그레이션을 추가해도 작동하지 않고 유용한 오류 메시지가 표시되지 않음

EF 6.0.12를 사용하고 있으며 프로젝트에 마이그레이션을 추가하면 기본적으로 다음과 같은 작업이 수행됩니다.

Visual Studio:

PM> 마이그레이션 초기 설정 추가
빌드 시작...
빌드에 실패했습니다.

CLI:

D:\myproject\db>도트넷-ef 마이그레이션이 Init 추가
빌드 시작...
빌드에 성공했습니다.
'RequestContext' 유형의 개체를 만들 수 없습니다.설계 시 지원되는 다양한 패턴은 https://go.microsoft.com/fwlink/ ?linkid=851728을 참조하십시오.

그것은 내 얼굴에 벽돌만큼 유용합니다.그것은 저를 정말 짜증나요.그리고 유용한 오류 메시지가 없기 때문에 어떻게 해결해야 할지 모르겠습니다.
이제 저는 프로젝트에서 다음 패키지를 사용합니다.

  • 마이크로소프트.엔티티 프레임워크 코어 버전 6.0.12
  • 마이크로소프트.엔티티 프레임워크 코어입니다.도구 버전 6.0.12
  • Pomelo. 엔티티 프레임워크 코어.MySql 버전 6.0.2

그리고 제 DB 컨텍스트는 클래스 라이브러리 안에 있으며 웹 API에서 사용됩니다.꽤 잘 먹히긴 하지만 이제는 이주가 필요합니다.
문제는 데이터베이스가 MariaDB이고 필요한 MySQL 패키지가 .NET 7.0을 지원하지 않으며 7.0을 사용하지 않으므로 EF7 패키지는 사용할 수 없습니다.하지만 제 문제는 제가 어떻게 이 문제의 원인을 찾기 시작할 수 있는지조차 모른다는 것입니다.그럼, 어디서부터 시작해서 이 일을 성공시킬 수 있을까요?


프로젝트를 .NET 7.0으로 마이그레이션하여 문제를 해결하려고 노력했지만 현재 최신 패키지를 사용하고 있습니다.

  • 마이크로소프트.엔티티 프레임워크 코어 7.0.1
  • 마이크로소프트.엔티티 프레임워크 코어입니다.도구 7.0.1
  • MySql.EntityFrameworkCore 6.0.7

이것들은 모두 최신 버전입니다.그리고 포멜로.엔티티 프레임워크 코어입니다.MySql이 제거되었습니다.그래도 오류가 발생해도 아무런 변화가 없습니다.
코드를 몇 가지 더 변경하여 CLI 및 VS에서 이 오류를 해결했습니다.이제 다음과 같은 예외가 있습니다.

PM> add-migration Katje-Init
Build started...
Build succeeded.
System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation.
 ---> System.MissingMethodException: Method not found: 'System.String Microsoft.EntityFrameworkCore.Diagnostics.RelationalStrings.get_NoConnectionOrConnectionString()'.
   at MySql.EntityFrameworkCore.Internal.MySQLOptions.GetConnectionSettings(MySQLOptionsExtension relationalOptions)
   at MySql.EntityFrameworkCore.Internal.MySQLOptions.Initialize(IDbContextOptions options)
   at Microsoft.EntityFrameworkCore.Internal.SingletonOptionsInitializer.EnsureInitialized(IServiceProvider serviceProvider, IDbContextOptions options)
   at Microsoft.EntityFrameworkCore.Internal.ServiceProviderCache.<GetOrAdd>g__BuildServiceProvider|4_1(IDbContextOptions _, ValueTuple`2 arguments)
   at Microsoft.EntityFrameworkCore.Internal.ServiceProviderCache.<>c.<GetOrAdd>b__4_0(IDbContextOptions contextOptions, ValueTuple`2 tuples)
   at System.Collections.Concurrent.ConcurrentDictionary`2.GetOrAdd[TArg](TKey key, Func`3 valueFactory, TArg factoryArgument)
   at Microsoft.EntityFrameworkCore.Internal.ServiceProviderCache.GetOrAdd(IDbContextOptions options, Boolean providerRequired)
   at Microsoft.EntityFrameworkCore.DbContext..ctor(DbContextOptions options)
   at RequestDatabase.RequestContext..ctor(DbContextOptions`1 options) in D:\Projects\DB\Datamodel.cs:line 16
Etc...

이제 CLI에서도 동일한 예외가 발생합니다.이전 오류를 어떻게 수정했는지는 확실하지 않지만, 여전히 매우 불분명합니다.다시 말하지만, 이러한 복잡한 오류를 해결하는 가장 좋은 방법은 무엇일까요?

마지막 오류는 변경 사항(일반적으로 패키지 간 버전 불일치의 징후)이 있음을 나타냅니다. 답변에서와 같이 - .NET 7용 Oracle MySQL 패키지에서 Pomelo 미리 보기 패키지로 전환합니다.

언급URL : https://stackoverflow.com/questions/74971124/adding-migration-doesnt-work-and-gives-no-useful-error-message

반응형