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

C# 将连接字符串从app.config移动到C中的代码#,c#,winforms,entity-framework,app-config,C#,Winforms,Entity Framework,App Config,我尝试使用实体框架,它将其连接字符串放入app.config。我想把它改为代码,因为在开发的这个阶段对我来说更容易 metadata=res://*/database.csdl | res://*/database.ssdl | res://*/database.msl;provider=System.Data.SqlClient;提供者连接字符串=“数据源=计算机;初始目录=数据库;持久安全信息=真;用户id=用户;密码=Mabm@A;multipleactiveresultsets=True

我尝试使用实体框架,它将其连接字符串放入app.config。我想把它改为代码,因为在开发的这个阶段对我来说更容易

metadata=res://*/database.csdl | res://*/database.ssdl | res://*/database.msl;provider=System.Data.SqlClient;提供者连接字符串=“数据源=计算机;初始目录=数据库;持久安全信息=真;用户id=用户;密码=Mabm@A;multipleactiveresultsets=True;App=EntityFramework“


如何使实体框架使用代码中的连接字符串,而不是查看
app.config
?或者,如果无法将参数传递到
app.config
(例如
dbname
dbuser
dbpassword
)?

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

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

i、 e.“Trusted_Connection=Yes”在您的连接字符串中,并通过AD安全地管理访问


为此,您可以使用
EntityConnectionStringBuilder


首先,使用带有connectionString参数的构造函数创建上下文。

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

此外,如果要在运行时传递用户名和密码,可以使用以下类创建连接字符串:

请看这里:

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

“我想将其移动到代码中,因为在开发的这个阶段对我来说更容易。”-这比在app.config中更容易吗?这让我怀疑你想要回答的真正问题不是你问过的问题。我想将其部署到用户,不希望密码/登录名存储在app.config中。在实体框架之前,我是用代码硬编码的。可能不是最好的解决方案,但在这个阶段,我只是不想在app.config中打开数据库的文本登录/密码。因此,要么我必须以某种方式将参数传递到这个函数中,要么硬编码连接字符串。@MitchWheat这是一种方法,但这意味着我必须接触数据库安全性,我基本上是让用户能够使用SQL Management Studio访问数据库,如果他愿意的话,可以直接到达数据库(可能他们不会这么做,因为他们不知道怎么做,但仍然如此)。在这种情况下,请使用集成安全性(我怀疑您在非域基础设施中使用的是直接DB访问)。通过将用户名和密码硬编码到您的应用程序中,您并没有让它更安全。您只是让它更糟糕。很好,为什么我没有想到这一点:-)谢谢。这是丹尼尔的答案,这是我需要的。我会接受丹尼尔斯回答我的问题,但没有他的回答就不完整。
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;
    }