Pomelo 中的 UseMySql 抛出异常

UseMySql in Pomelo throwing exception

所以我看到了 .NET Core 的 Pomelo 包最奇怪的行为。

var optionsBuilder = new DbContextOptionsBuilder<AssessmentContext>();
var cn = String.Format(config["ConnectionStrings:AwsConnection"], config["Aws:MySQLPassword"]);

optionsBuilder.UseMySql(cn);
db = new AssessmentContext(optionsBuilder.Options);

我在单元测试中使用了上述代码来设置与 AWS 中的 MySQL 数据库的连接。这已经工作了大约一个星期了。但是,从今天开始,当它到达 optionsBuilder.UseMySql(cn); 时,我遇到了异常。

Assessment.Tests.Data.Contexts.AssessmentContextTests.ConnectToMySQL:
    Outcome: Failed
    Error Message:
    Class Initialization method Assessment.Tests.Data.Contexts.AssessmentContextTests.Initialize threw exception. System.TypeLoadException: System.TypeLoadException: Could not load type 'MySql.Data.MySqlClient.MySqlConnectionStringBuilder' from assembly 'MySqlConnector, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d33d3e53aa5f8c92'..
    Stack Trace:
       at Microsoft.EntityFrameworkCore.MySqlDbContextOptionsExtensions.UseMySql(DbContextOptionsBuilder optionsBuilder, String connectionString, Action`1 mySqlOptionsAction)
   at Microsoft.EntityFrameworkCore.MySqlDbContextOptionsExtensions.UseMySql[TContext](DbContextOptionsBuilder`1 optionsBuilder, String connectionString, Action`1 mySqlOptionsAction)
   at Assessment.Tests.Data.Contexts.AssessmentContextTests.Initialize(TestContext context) in

这一直运行良好。我没有更新任何库,但它失败了,我无法连接。有什么想法吗?我正在使用 .NET Core 3.1 和 pomelo 版本 3.0.1.

版本不匹配。 MySqlConnector 在 1.0.0 版本中更改了它的命名空间。由于这是一个重大更改并且 Pomelo 符合 SemVer2,Pomelo 仍在使用 MySqlConnector < 1.0.0(当前为 0.69.9)。

更高版本的 Pomelo(例如当前版本 3.2.2)明确限制 MySqlConnector 版本低于 1.0.0,因此使用 MySqlConnection 版本 >= 1.0.0 将导致编译时错误而不是运行时错误。

因此,要解决此问题,请使用低于 1.0.0 的最新版本的 MySqlConnector。


附带说明一下,您应该考虑使用 EF Core 3.1.8 和 Pomelo 3.2.2。自 3.0.1 版本以来,Pomelo 修复了许多错误。