c# - 具有不变名称“System.Data.SqlClient”的 ADO.NET 提供程序未注册
问题描述
我有一个 .NET Core React Web 应用程序,它调用一个引用实体框架的类库。我正在使用存储在 Azure 中的数据库,每次查询数据库时,都会出现以下异常:
System.ArgumentException: '具有不变名称'System.Data.SqlClient' 的 ADO.NET 提供程序未在计算机或应用程序配置文件中注册,或者无法加载。有关详细信息,请参阅内部异常。
InnerException:ArgumentException:在已注册的 .NET 数据提供程序列表中找不到指定的不变名称“System.Data.SqlClient”。
我在想我的 Web.config/App.config 文件中没有正确配置某些内容,但我不确定。
Web.config
我的网络应用程序中的文件:
<configuration>
<connectionStrings>
<add name="JATEntities"
connectionString="Server=tcp:[someserver].database.windows.net,1433;Database=JAT;persist security info=True;user id=[userid];password=[password];MultipleActiveResultSets=True;"
providerName="System.Data.SqlClient" />
</connectionStrings>
</configuration>
我App.Config
在我的类库中:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</configSections>
<connectionStrings>
<add name="JATEntities"
connectionString="Server=tcp:[someserver].database.windows.net,1433;Database=JAT;persist security info=True;user id=[userid];password=[password];MultipleActiveResultSets=True;"
providerName="System.Data.SqlClient" />
</connectionStrings>
<entityFramework>
<providers>
<provider invariantName="System.Data.SqlClient"
type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
</providers>
</entityFramework>
</configuration>
这是我在类库中调用的代码:
public class MyClass
{
// I've tried this as it seems to have worked for some people
private static string __hack = typeof(SqlProviderServices).ToString();
public void MyMethod()
{
using (var context = new JATEntities())
{
var query = from listing in context.CurrentListings
where listing.Id == id
select listing;
}
}
}
我还将 ClassLibrary 中的 App.config 文件引用到我的 Web App 项目中,但这似乎没有帮助。
[External Code]
JAT.DB.dll!JAT.DB.Repo.Repo.GetCurrentListingById(int id) Line 22
at C:\Users\Jungle\source\repos\JAT\JAT.DB\Repo\Repo.cs(22)
JAT.Client.dll!JAT.Client.Controllers.SearchController.FirstMethod() Line 25
at C:\Users\Jungle\source\repos\JAT\JAT.Client\Controllers\SearchController.cs(25)
[External Code]
解决方案
对我有用的是升级到 Visual Studio 2019,并创建一个新的 .Net 核心 Web 应用程序和 .net 核心类库,然后将我的所有代码从旧解决方案移动到新解决方案中。
推荐阅读
- ios - Facebook 似乎随机出现在我的项目中
- swiftui - SwiftUI 动画列表行的展开和折叠
- php - 由于 CORS“Access-Control-Allow-Origin”不存在,phpCAS 注销失败
- xml - 如何从 woocommerce 为其他 cms 平台创建 xml 提要?
- c# - 将 RTF 保存在数据库上并将其加载回 WinForms 应用程序
- html - 如何将 cdkDropList 的元素放入 div?
- c# - 从类方法中获取属性名称
- excel - 如何在不使用 Ctrl+Shift+Enter 的情况下在 Excel VBA 中激活 FormulaArray?
- c# - 具有相同 ToolStripMenuItem 的 ShortcutKeys 的多个控件
- ios - 如何删除firebase数据库