我正在尝试使用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
(例如dbname
,dbuser
,dbpassword
)?
答案 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安全地管理访问。
答案 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
答案 4 :(得分:0)
如果连接字符串登录的详细信息始终相同,那么我建议您使用ConfigurationManager从app.config中检索连接字符串并加密文件的ConnectionStrings部分。