【发布时间】:2019-09-25 18:49:28
【问题描述】:
我正在尝试使用现有的库,它是一个使用 EF 6.0 连接到数据库的 .net 库。由于 Azure Functions 没有 app.config 文件,因此我尝试使用 C# 代码设置连接字符串。但是在使用我的数据库上下文连接到数据库时出现以下异常:
System.ArgumentException:具有不变名称“System.Data.SqlClient”的 ADO.NET 提供程序未在计算机或应用程序配置文件中注册,或者无法加载。有关详细信息,请参阅内部异常。
System.ArgumentException:在已注册的 .NET 数据提供程序列表中找不到指定的不变名称“System.Data.SqlClient”
MyDBContext.partial.cs:
[DbConfigurationType(typeof(MyDbConfiguration))]
public partial class MyDBContext : DbContext
{
public MyDBContext (string ConnectionString)
: base(ConnectionString)
{
}
}
public class MyDbConfiguration : DbConfiguration
{
public MyDbConfiguration()
{
SetProviderServices("System.Data.SqlClient", SqlProviderServices.Instance);
SetDefaultConnectionFactory(new SqlConnectionFactory());
}
}
我有如下方法来获取DBContext。库方法将使用此方法来获取数据库上下文实例。
public MyDBContext GetDB( string metadata, string connectionString )
{
EntityConnectionStringBuilder b = new EntityConnectionStringBuilder();
b.Metadata = metadata;
b.ProviderConnectionString = connectionString;
b.Provider = "System.Data.SqlClient";
return new MyDBContext (b.ConnectionString);
}
当我执行一个库方法从 Azure 函数 v2 中的 db 加载数据时,该函数在内部调用上述方法来获取 DB Context,然后连接到实际的 DB。这里正在创建 MyDBContext 对象,但是当它连接到 db 时会发生以下异常。
System.ArgumentException:具有不变名称“System.Data.SqlClient”的 ADO.NET 提供程序未在计算机或应用程序配置文件中注册,或者无法加载。有关详细信息,请参阅内部异常。
System.ArgumentException:在已注册的 .NET 数据提供程序列表中找不到指定的不变名称“System.Data.SqlClient”
【问题讨论】:
-
使用 AzureFunctions 中可用的
applicationSettings或ConnectionStrings来检索您的连接字符串。您不必执行任何这些操作
标签: entity-framework azure azure-functions