添加迁移不起作用,并且不会给出有用的错误消息



我使用的是EF 6.0.12,当向我的项目添加迁移时,基本上会发生这种情况:

Visual Studio:

PM>add-migration Initial
Build started…
构建失败。

CLI:

D:myprojectdb>dotnet-ef migrations add Init
Build started…
构建成功。
无法创建"RequestContext"类型的对象。有关设计时支持的不同模式,请参阅https://go.microsoft.com/fwlink/?linkid=851728

这就像砖头砸在我脸上一样有用。这让我很恼火。我不知道如何解决这个问题,因为没有有用的错误信息…
现在,我在我的项目中使用这些包:

  • 微软。EntityFrameworkCore 6.0.12
  • Microsoft.EntityFrameworkCore。Tools Version 6.0.12
  • Pomelo.EntityFrameworkCore。MySql Version 6.0.2

我的DBContext在Class库中,由Web API使用。它工作得很好,但我现在需要迁移。
问题是我的数据库是MariaDB,我需要的MySQL包不支持。net 7.0,我也不使用7.0,所以EF7包是禁止的。但我的问题是,我只是不知道如何开始找到这个问题的原因。那么,我该从哪里开始尝试并让它发挥作用呢?


我试图通过将项目迁移到。net 7.0来解决问题,现在使用最新的包:

  • 微软。EntityFrameworkCore 7.0.1
  • Microsoft.EntityFrameworkCore。工具7.0.1
  • MySql。EntityFrameworkCore 6.0.7

这些都是最新的版本。并且删除了柚。entityframeworkcore . 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:ProjectsDBDatamodel.cs:line 16
Etc...

现在CLI给出相同的异常。不知道我是如何修复之前的错误的,但它仍然很不清楚。那么,解决这些复杂误差的最佳方法是什么呢?

最后一个错误表明存在破坏性更改(通常是包之间版本不匹配的标志)。就像这个答案一样——从Oracle MySQL包切换到。net 7的Pomelo预览包。

最新更新