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=&quot;data source=sourcenet;initial catalog=COASTALCAROLINAPODIATRY;User ID=scheduler;Password=Pass;MultipleActiveResultSets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" />

您正在为entityBuilder.Provider提供“System.Data.SqlClient”,但据我所知,它应该是“System.Data.EntityClient”,以便使用entityBuilder创建连接字符串。

您应该删除OnModelCreating。查看或。实体连接字符串用于数据库优先应用程序,如果您更改数据库(->代码优先),则不需要该字符串@DevilSuichiro请不要对您不理解的问题发表评论
    public SMBASchedulerEntities(string sConnectionString)
        : base(sConnectionString)
    {

    }