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

0vvn1miw  于 2023-01-02  发布在  其他
关注(0)|答案(1)|浏览(124)

我使用的是EF 6.0.12,在向我的项目添加迁移时,基本上会发生以下情况:
可视化工作室:
PM〉添加迁移初始
生成已开始...
构建失败。
命令行界面:
D:\myproject\db〉dotnet-ef迁移添加初始化
生成已开始...
生成成功。
无法创建类型为"RequestContext"的对象。有关设计时支持的不同模式,请参阅https://go.microsoft.com/fwlink/?linkid=851728
这就像一块砖头砸在我脸上一样有用。它让我非常恼火。我不知道如何解决这个问题,因为没有有用的错误信息...
现在,我在我的项目中使用这些包:

  • Microsoft实体框架核心版本6.0.12
  • Microsoft实体框架核心工具版本6.0.12
  • Pomelo.EntityFrameworkCore.MySql版本6.0.2

我的DBContext在一个类库中,由一个WebAPI使用,运行得很好,但是我现在需要迁移。
问题是我的数据库是MariaDB,而我需要的MySQL包不支持. NET 7.0,我也不使用7.0,所以EF7包是禁止使用的。但我的问题是,我只是不知道如何开始找到这个问题的原因。那么,我从哪里开始尝试,使工作?
我尝试过将项目迁移到. NET 7.0来解决问题,现在使用最新的包:

  • 微软实体框架核心7.0.1
  • Microsoft实体框架核心工具7.0.1
  • MySql实体框架核心6.0.7

这些都是最新的版本。而且Pomelo.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:\Projects\DB\Datamodel.cs:line 16
Etc...

CLI现在给出了相同的异常。不确定我是如何修复前面的错误的,但仍然非常不清楚。那么,解决这些复杂错误的最佳方法是什么?

6qftjkof

6qftjkof1#

最后一个错误显示有破坏性的更改(通常是包之间版本不匹配的迹象)。如以下答案所示-从Oracle MySQL包切换到Pomelo preview one for .NET 7。

相关问题