C# 在运行时选择实体连接字符串
我有一个连接到MYSQL数据库的应用程序。我使用实体框架来完成所有的工作。 现在,当我第一次安装时,我设置了entity,并生成了如下连接字符串:C# 在运行时选择实体连接字符串,c#,entity-framework,C#,Entity Framework,我有一个连接到MYSQL数据库的应用程序。我使用实体框架来完成所有的工作。 现在,当我第一次安装时,我设置了entity,并生成了如下连接字符串: <connectionStrings> <add name="networkingEntities" connectionString="metadata=res://*/Model1.csdl|res://*/Model1.ssdl|res://*/Model1.msl;provider=MySql.Data.MySqlClien
<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>
现在,我的应用程序有两个用户:一个管理员和一个学生
Form1=>从数据库和服务器更新信息
登录表单=>用户身份验证
MainForm=>所有操作都参与其中。如果管理员登录,他可以修改数据库中的内容
数据库:
有2个用户:root和lucian
“lucian”是一个有限的用户
现在,我的问题是:
如何将第二个连接字符串添加到已存在的连接字符串中,并在运行时选择该字符串?我的意思是,当Form1运行时,将线程置于睡眠状态,选择第二个连接字符串,然后转到登录表单,以管理员身份登录,并将cnahge放入数据库?
我如何从连接字符串和外部文件中获取登录信息?据我所知,您使用的是EF DB first或model first,其结果是实体框架将连接字符串添加到app.config中。如果第二个连接字符串应该指向同一个数据库,则向项目中添加一个新的数据模型,并将其指向您选择的数据库,然后从中生成一个模型,然后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];
编辑你的答案。
嗨,因为我对这个话题也很感兴趣,我在谷歌上快速搜索了一下,找到了这个:
NET似乎为我们提供了一些方便的内置机制。虽然我对这个话题也不熟悉,但对于如何使用它,我还没有现成的答案。GLHF我就是这样解决的:
1.修改了App.config,如下所示:
<connectionstrings configsource="DatabaseConnectionDetails.config" />;
*4.*每当我想使用上下文时,我都会使用(例如):
networkingenties net=新的networkingenties(str);
公共列表列表autilizatori()
{
var query=来自net.utilizator中的u
选择u;
列表用户=新列表();
尝试
{
users=query.ToList();
}
捕获(例外e)
{
控制台写入线(e.Message);
}
返回用户;
}
现在,我仍然需要了解如何加密配置文件。。。。
谢谢大家的帮助…用于按名称选择。或者如果你使用EF5,
<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>
public <#=code.Escape(container)#>(string myString)
: base(myString)
{
<#
if (!loader.IsLazyLoadingEnabled(container))
{
#>
this.Configuration.LazyLoadingEnabled = false;
<#
}
#>
}
string str = ConfigurationManager.ConnectionStrings["networkingEntitiesAdmin"].ConnectionString;
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;
}