我有一个使用。net Standard 2.1开发的c#库,这个库在。net Core 3.0上构建的测试控制台应用程序中被调用。但是在运行时,GetFactory抛出了一个异常。
private DbConnection connection;
connection = DbProviderFactories.GetFactory("MySql.Data.MySqlClient").CreateConnection();
异常:
我已经安装了MySqlConnector 1.2.1。但这无济于事。并在app.config文件中添加以下内容:DbProviderFactories。GetFactory指定的不变变量名称'MySql.Data '。在注册的。net数据提供程序列表中没有找到MySqlClient。
<system.data>
<DbProviderFactories>
<remove invariant="MySql.Data.MySqlClient" />
<add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient" description=".Net Framework Data Provider for MySQL" type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, Version=8.0.23.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
</DbProviderFactories>
</system.data>
您为app.config显示的XML仅适用于。net框架应用程序。
对于。net Core 2.1或更高版本,调用DbProviderFactories.RegisterFactory
。您传递的确切参数将取决于您想要注册的工厂(以及您已安装的NuGet包):
// MySqlConnector (my personal recommendation for .NET Core)
DbProviderFactories.RegisterFactory("MySqlConnector", MySqlConnector.MySqlConnectorFactory.Instance);
// MySql.Data (may be needed instead if other code is hard-coded to "MySql.Data.MySqlClient")
DbProviderFactories.RegisterFactory("MySql.Data.MySqlClient", MySql.Data.MySqlClient.MySqlClientFactory.Instance);
有关更多信息,请参见Using DbProviderFactories。