首页 > 解决方案 > EF6 将连接字符串传递给 DbContext:System.ArgumentException:'不支持关键字:'provider'。

问题描述

我试图通过它的构造函数将连接字符串传递给 DbContext 类,但我不断收到此异常。 System.ArgumentException: 'Keyword not supported: 'provider'.'

基于其他stackoverflow帖子,我以这种方式获取连接字符串。

public string GetConnection()
{
    SqlConnectionStringBuilder sqlBuilder = new SqlConnectionStringBuilder();
    sqlBuilder.DataSource = "DataSource";
    sqlBuilder.InitialCatalog = "InitialCatalog";
    sqlBuilder.UserID = "UserID";
    sqlBuilder.Password = "Password";

    EntityConnectionStringBuilder entityString = new EntityConnectionStringBuilder()
    {
        Provider = "System.Data.SqlClient",
        ProviderConnectionString = sqlBuilder.ToString()
    };

    return entityString.ConnectionString;
}

这是生成的(实际凭据替换为虚拟数据)

provider=System.Data.SqlClient;provider connection string="Data Source=DataSource;Initial Catalog=InitialCatalog;User ID=UserID;Password=Password"

这是 DBContext 类构造函数

    public CustomerContext(string connectionString) : base(connectionString)
    {

    }

标签: c#entity-frameworkentity-framework-6connection-stringargumentexception

解决方案


对于任何可能遇到此错误的人。原来我必须在要引用我的存储库 dll 的所有项目上安装 EF6 包。

在所有需要它的项目上安装软件包后,我只传递了连接字符串。没有任何特殊格式或提供提供者信息。

Data Source=DataSource;Initial Catalog=InitialCatalog;User ID=UserID;Password=Password

推荐阅读