'在已注册的 .NET 数据提供程序列表中找不到指定的不变名称 'System.Data.SqlClient'。在 .netCore 项目上

the*_*ert 6 .net-core asp.net-core

我在引用连接到 SQL 数据库的 .netCore 库的 .netCore API 项目上收到上述错误。有人能帮我一下吗?我已经引用了 System.Data.SQLClient 或 Microsoft.Data.SqlClient ,但仍然没有运气。

谢谢,

赫伯特

小智 13

.NET Core 中没有全局配置(俗称 GAC)。因此,默认情况下未注册提供程序。您必须手动注册提供程序。您可以将其注册为

DbProviderFactories.RegisterFactory("System.Data.SqlClient", System.Data.SqlClient.SqlClientFactory.Instance);

//for Connection
var factory = DbProviderFactories.GetFactory("System.Data.SqlClient");
DbConnection connection = factory.CreateConnection();
Run Code Online (Sandbox Code Playgroud)

  • 谢谢。如果该库是在 .net 框架中构建的怎么样?是 .net 框架的“DbProviderFactories.RegisterFactory()”还是等效的? (2认同)
  • 我们有一个 .Net Framework 4.6.1 程序集并将其包含在 .Net Core 3.1 api 中,因此我们需要在库和主 api 项目中都包含“Microsoft.Data.SqlClient”。将代码从 Systems.Data.SqlClient 更改为 Microsoft.Data.SqlClient 还需要在启动构造函数中添加此行: `public Startup(IConfiguration configuration) { Configuration = configuration; // 切萨雷。Requerido para .net Core DbProviderFactories.RegisterFactory("Microsoft.Data.SqlClient", Microsoft.Data.SqlClient.SqlClientFactory.Instance); }` (2认同)