c# - 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)
{
}
解决方案
对于任何可能遇到此错误的人。原来我必须在要引用我的存储库 dll 的所有项目上安装 EF6 包。
在所有需要它的项目上安装软件包后,我只传递了连接字符串。没有任何特殊格式或提供提供者信息。
Data Source=DataSource;Initial Catalog=InitialCatalog;User ID=UserID;Password=Password