我有一个.NET Core React Web应用程序,该应用程序调用带有对Entity Framework的引用的类库。我使用的是存储在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]
答案 0 :(得分:0)
对我有用的是升级到Visual Studio 2019,创建一个新的.Net核心Web应用程序和.net核心类库,然后将我所有的代码从旧解决方案迁移到新解决方案中。