我有一个连接到MYSQL数据库的应用程序。我使用Entity Framework来完成所有工作。 现在当我第一次安装时,我设置了实体,并产生了这样的连接字符串:
<connectionStrings>
<add name="networkingEntities" connectionString="metadata=res://*/Model1.csdl|res://*/Model1.ssdl|res://*/Model1.msl;provider=MySql.Data.MySqlClient;provider connection string="server=localhost;user id=root;password=lucian;persist security info=True;database=networking"" providerName="System.Data.EntityClient"/>
</connectionStrings>
现在,我的应用程序有2个用户:管理员和学生。
Form1 =&gt;从数据库和服务器更新信息
登录表单=&gt;用户认证
MainForm =&gt;所有行动都参与其中。如果管理员已登录,则可以修改数据库中的内容
数据库: 有2个用户:root和lucian。
“lucian”是一个有限的用户...
现在,我的问题是:
如何将第二个连接字符串添加到现有连接字符串中,并在运行时选择该连接字符串?我的意思是,当Form1运行时,让线程进入休眠状态,选择第二个连接字符串,然后转到登录表单,以admin身份登录并使cnahge成为数据库的罪名?
如何从外部文件中获取连接字符串中的登录信息?
答案 0 :(得分:0)
据我所知,您首先使用EF DB或首先使用模型,因此Entity Framework将连接字符串添加到app.config。如果第二个连接字符串应指向同一个数据库,请将新的DataModel添加到项目中并将其指向您选择的数据库并从中生成模型,然后EF为您创建连接字符串。
定位第二个连接字符串。
// by name attribute from the app.config/web.config
ConfigurationManager.ConnectionStrings["networkingEntities"].ConnectionString; connection string.
// or select by index.
var index = 0;
var adminConnectionString = ConfigurationManager.ConntectionString[++index];
var userConnectionString = ConfigurationManager.ConnectionString[index];
编辑你的答案。 嗨,因为我对这个话题很感兴趣,我做了一个快速谷歌,发现了这个: http://msdn.microsoft.com/en-us/library/system.configuration.sectioninformation.protectsection.aspx 似乎.NET为我们提供了一些方便的内置机制。我也不熟悉这个主题我不知道如何使用它。 GLHF
答案 1 :(得分:0)
所以这就是我解决的问题:
1。修改了App.config,如:
<connectionstrings configsource="DatabaseConnectionDetails.config" />;
这是DatabaseConnectionDetails.config:
<connectionstrings>
<add name="networkingEntities" connectionstring="metadata=res://*/Model1.csdl|res://*/Model1.ssdl|res://*/Model1.msl;provider=MySql.Data.MySqlClient;provider connection string="server=localhost;user id=lucian;password=lucian;persist security info=True;database=networking"" providername="System.Data.EntityClient" />
<add name="networkingEntitiesAdmin" connectionstring="metadata=res://*/Model1.csdl|res://*/Model1.ssdl|res://*/Model1.msl;provider=MySql.Data.MySqlClient;provider connection string="server=localhost;user id=root;password=lucian;persist security info=True;database=networking"" providername="System.Data.EntityClient" />
</connectionstrings>
* 2. *为Model1.Context.tt模板添加了一个带字符串参数的构造函数:
public <#=code.Escape(container)#>(string myString)
: base(myString)
{
<#
if (!loader.IsLazyLoadingEnabled(container))
{
#>
this.Configuration.LazyLoadingEnabled = false;
<#
}
#>
}
* 3。 *获取如下连接字符串:
string str = ConfigurationManager.ConnectionStrings["networkingEntitiesAdmin"].ConnectionString;
* 4。 *每当我想使用上下文时,我都会使用(例如):
networkingEntities net=new networkingEntities(str);
public List<utilizator> ListaUtilizatori()
{
var query = from u in net.utilizator
select u;
List<utilizator> users = new List<utilizator>();
try
{
users = query.ToList();
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
return users;
}
现在,我仍然需要了解如何加密配置文件.... 谢谢大家的帮助......