将连接字符串从app.config移动到C#中的代码

时间:2012-01-23 10:43:56

标签: c# winforms entity-framework app-config

我正在尝试使用Entity Framework,并将其连接字符串放入app.config。我想把它移到代码中,因为在这个开发阶段我更容易。

metadata=res://*/database.csdl|res://*/database.ssdl|res://*/database.msl;provider=System.Data.SqlClient;provider connection string="data source=computer;initial catalog=database;persist security info=True;user id=user;password=Mabm@A;multipleactiveresultsets=True;App=EntityFramework"

如何让Entity Framework使用代码中的连接字符串,而不是查看app.config?或者,如果不可能,我如何将参数传递给app.config(例如dbnamedbuserdbpassword)?

5 个答案:

答案 0 :(得分:4)

您可以将EntityConnectionStringBuilder用于此目的。 Check here

public string GetConnectionString()
    {
        string connectionString = new EntityConnectionStringBuilder
        {
            Metadata = "res://*/Data.System.csdl|res://*/Data.System.ssdl|res://*/Data.System.msl",
            Provider = "System.Data.SqlClient",
            ProviderConnectionString = new SqlConnectionStringBuilder
            {
                InitialCatalog = ConfigurationManager.AppSettings["SystemDBName"],
                DataSource = ConfigurationManager.AppSettings["SystemDBServerName"],
                IntegratedSecurity = false,
                UserID = ConfigurationManager.AppSettings["SystemDBUsername"],
                Password = ConfigurationManager.AppSettings["SystemDBPassword"],
                MultipleActiveResultSets = true,
            }.ConnectionString
        }.ConnectionString;

        return connectionString;
    }

答案 1 :(得分:2)

当您创建ObjectContext派生类的实例时,您只需将连接字符串作为构造函数参数传递。

答案 2 :(得分:0)

为什么不使用集成安全性,而不是使用用户名和密码?它更安全,更易于管理。

即。连接字符串中的“Trusted_Connection = Yes”并通过AD安全地管理访问。

Connection Strings

答案 3 :(得分:0)

首先,使用带有connectionString参数的构造函数创建上下文。 http://msdn.microsoft.com/en-us/library/gg679467(v=vs.103).aspx

请注意,您不必直接调用此构造函数,而是您的实体生成器为您创建的数据库的特定继承上下文构造函数。

此外,如果要在运行时传递用户名和密码,可以使用此类创建连接字符串: http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlconnectionstringbuilder.aspx

见这里: http://msdn.microsoft.com/en-us/library/bb738533.aspx

答案 4 :(得分:0)

如果连接字符串登录的详细信息始终相同,那么我建议您使用ConfigurationManager从app.config中检索连接字符串并加密文件的ConnectionStrings部分。