我试图通过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包。
一旦包安装在所有需要它的项目上,我只传递了连接字符串。没有任何特殊的格式化,也没有提供Provider信息。
Data Source=DataSource;Initial Catalog=InitialCatalog;User ID=UserID;Password=Password