마이그레이션을 추가해도 작동하지 않고 유용한 오류 메시지가 표시되지 않음
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
'programing' 카테고리의 다른 글
Firebase와 함께 NodeJs 사용 - 보안 (0) | 2023.06.16 |
---|---|
상위 구성 요소를 통해 pinia 저장소 액세스 (0) | 2023.06.16 |
vba를 사용하여 전체 텍스트 파일 읽기 (0) | 2023.06.16 |
dll 옆에 있는 xml 파일의 용도는 무엇입니까? (0) | 2023.06.16 |
VB.NET에서 정적 메서드 구현 (0) | 2023.06.16 |