C# 通过代码设置实体连接字符串
好的,我在切换数据库的实现上有了进一步的进展,在我的上下文类中有了一个方法C# 通过代码设置实体连接字符串,c#,winforms,entity-framework,C#,Winforms,Entity Framework,好的,我在切换数据库的实现上有了进一步的进展,在我的上下文类中有了一个方法 public string SetupConnections() { //Specify the provider name, server and database. string providerName = "System.Data.SqlClient"; string serverName = "."; string databaseName = "DBNAME"
public string SetupConnections()
{
//Specify the provider name, server and database.
string providerName = "System.Data.SqlClient";
string serverName = ".";
string databaseName = "DBNAME";
// Initialize the connection string builder for the
// underlying provider.
SqlConnectionStringBuilder sqlBuilder =
new SqlConnectionStringBuilder();
// Set the properties for the data source.
sqlBuilder.DataSource = serverName;
sqlBuilder.InitialCatalog = databaseName;
sqlBuilder.IntegratedSecurity = false;
sqlBuilder.UserID = "USERNAME";
sqlBuilder.Password = "PASS";
// Build the SqlConnection connection string.
string providerString = sqlBuilder.ToString();
// Initialize the EntityConnectionStringBuilder.
EntityConnectionStringBuilder entityBuilder =
new EntityConnectionStringBuilder();
//Set the provider name.
entityBuilder.Provider = providerName;
// Set the provider-specific connection string.
entityBuilder.ProviderConnectionString = providerString;
// Set the Metadata location.
entityBuilder.Metadata = @"res://*/Model1.csdl|res://*/Model1.ssdl|res://*/Model1.msl";
Console.WriteLine(entityBuilder.ToString());
using (EntityConnection conn =
new EntityConnection(entityBuilder.ToString()))
{
conn.Open();
Console.WriteLine("Just testing the connection.");
conn.Close();
}
return sqlBuilder.ToString();
}
但是,当我运行应用程序时,它表示基础提供程序无法为用户打开。我是否添加了用户名和密码正确的obv出于安全原因伪装了我的真实密码
这是我的原始连接字符串,它可以工作。我在technet中遵循了这个示例
是的,我不,这个例子是integrated security=true,但我不想用它,我想用用户名和密码
<add name="SMBASchedulerEntities" connectionString="metadata=res://*/Model1.csdl|res://*/Model1.ssdl|res://*/Model1.msl;provider=System.Data.SqlClient;provider connection string="data source=sourcenet;initial catalog=COASTALCAROLINAPODIATRY;User ID=scheduler;Password=Pass;MultipleActiveResultSets=True;App=EntityFramework"" providerName="System.Data.EntityClient" />
您正在为entityBuilder.Provider提供“System.Data.SqlClient”,但据我所知,它应该是“System.Data.EntityClient”,以便使用entityBuilder创建连接字符串。您应该删除OnModelCreating。查看或。实体连接字符串用于数据库优先应用程序,如果您更改数据库(->代码优先),则不需要该字符串@DevilSuichiro请不要对您不理解的问题发表评论
public SMBASchedulerEntities(string sConnectionString)
: base(sConnectionString)
{
}