2012-01-23 49 views
2

我试图使用实体框架,它把它的连接字符串放到app.config中。我想将它移到代码中,因为在这个开发阶段对我来说更容易。将连接字符串从app.config移动到C#代码#

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;[email protected];multipleactiveresultsets=True;App=EntityFramework"

我如何可以从代码实体框架使用的连接字符串,而再看看app.config?或者,如果这是不可能的我怎么能通过参数app.config(如dbname,dbuser, dbpassword)?

+6

“我想将它移动到代码中,因为在这个开发阶段对我来说更容易。” - 这比在app.config中更容易吗?让我怀疑你想回答的真正问题不是你问的问题。 –

+0

我想将其部署到用户,并且不希望密码/登录存储在app.config中。在实体框架之前,我在代码中对此进行了严格的编码。可能不是最好的解决方案,但在这个阶段,我只是不想在app.config中有数据库的开放文本登录/密码。所以要么我必须以某种方式传递参数或硬编码连接字符串。 – MadBoy

+0

@MitchWheat @MitchWheat这是一种方式,但这意味着我必须触及数据库安全性,而且我基本上提供了一个用户使用SQL Management Studio访问数据库的能力,如果他愿意,可以直接进入数据库峰值(可能他们不会这样做,因为他们不会不知道如何,但仍然)。 – MadBoy

回答

2

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

+0

不错,为什么我没有想过:-) – MadBoy

0

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

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

Connection Strings

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

谢谢。这与丹尼尔的答案是我需要的。我会接受丹尼尔斯回答我的问题,但没有他的答案不完整。 – MadBoy

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

0

如果在连接字符串日志中详细信息总是相同的,那么我会建议你使用ConfigurationManager从你的app.config中检索连接字符串并加密文件的ConnectionStrings部分。

相关问题