不变名称为'System.Data.SqlClient'的ADO.NET提供程序未注册

时间:2019-11-24 18:14:17

标签: c# entity-framework azure .net-core

我有一个.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]

1 个答案:

答案 0 :(得分:0)

对我有用的是升级到Visual Studio 2019,创建一个新的.Net核心Web应用程序和.net核心类库,然后将我所有的代码从旧解决方案迁移到新解决方案中。