Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/258.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在运行时选择实体连接字符串_C#_Entity Framework - Fatal编程技术网

C# 在运行时选择实体连接字符串

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

我有一个连接到MYSQL数据库的应用程序。我使用实体框架来完成所有的工作。 现在,当我第一次安装时,我设置了entity,并生成了如下连接字符串:

<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=&quot;server=localhost;user id=lucian;password=lucian;persist security info=True;database=networking&quot;" 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=&quot;server=localhost;user id=root;password=lucian;persist security info=True;database=networking&quot;" 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;
        }