Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/29.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#_Asp.net_Entity Framework_Web Config - Fatal编程技术网

C# 在多数据库环境中映射正确的连接字符串&;在运行时维护登录用户会话状态的成员身份一次

C# 在多数据库环境中映射正确的连接字符串&;在运行时维护登录用户会话状态的成员身份一次,c#,asp.net,entity-framework,web-config,C#,Asp.net,Entity Framework,Web Config,在我的web应用程序中,我有一个超级管理员[MASTER_DB]模块,我们可以在其中创建多个客户机&这些客户机可以有多个用户。对于每个客户机,我们有不同的数据库。我在MASTER_DB中保存了客户的所有详细信息。我们从超级管理员为每个客户端输入连接字符串。我们从superadmin创建一个管理员用户&在该用户的帮助下,客户端创建另一个用户。这些用户必须在该客户机的数据库中创建&所有相关活动都应该在该数据库上执行 通过使用SqlMembershipProvider和SqlRoleProvider类

在我的web应用程序中,我有一个超级管理员[MASTER_DB]模块,我们可以在其中创建多个客户机&这些客户机可以有多个用户。对于每个客户机,我们有不同的数据库。我在MASTER_DB中保存了客户的所有详细信息。我们从超级管理员为每个客户端输入连接字符串。我们从superadmin创建一个管理员用户&在该用户的帮助下,客户端创建另一个用户。这些用户必须在该客户机的数据库中创建&所有相关活动都应该在该数据库上执行

通过使用SqlMembershipProvider和SqlRoleProvider类,以及在web.config中更新连接字符串运行时,我能够创建从超级管理员到特定客户端数据库的管理员用户。并使用特定客户机存储的连接字符串更新客户机的详细信息&传递给dbContext

public分部类DBEntities:System.Data.Entity.DbContext
{
公共数据库实体(字符串连接字符串)
:基本(连接字符串)
{
}
}
我们有相同的链接供所有用户访问我们的web应用程序。我正在实现在运行时更改web.config文件连接字符串,一旦用户从MASTER_DB验证并将该用户登录映射到特定的DB。但在运行时更改web.config中的连接字符串似乎不是一个好的解决方案&它不能完美地工作

因此,如果有人实施了此方案,请指导我实施此方案的最佳方法;一旦我得到正确的连接字符串,我应该将该用户映射到正确的数据库,并在其上应用成员资格函数。
我正在使用Visual Studio 2012&实体框架。

是否为所有人创建单个edmx


如果是,请将所有数据库的edmax分开,并使用它们的上下文执行数据库操作。

Thanx以获得答复。我正在创建两个edmx文件。一个超级管理员。还有一个是给客户的。我只是在超级管理员中引用客户机的data layer.dll(在数据层中,我包含了edmx文件)。通过使用实体ModelName,我将连接字符串传递给dbContext,以将特定细节存储到特定客户机的数据库中--对于超级管理员`使用(DBEntitiesSuperAdmin _db=new DBEntitiesSuperAdmin()){}`--对于客户端使用(DBClientSenties _db=new ClientSenties(ConnectionString)){}