【发布时间】:2013-12-11 12:59:18
【问题描述】:
我有一个引用我的模型和 DAL 程序集的 Web API 项目。用户会看到一个登录屏幕,他可以在其中选择不同的数据库。
我构建连接字符串如下:
public void Connect(Database database)
{
//Build an SQL connection string
SqlConnectionStringBuilder sqlString = new SqlConnectionStringBuilder()
{
DataSource = database.Server,
InitialCatalog = database.Catalog,
UserID = database.Username,
Password = database.Password,
};
//Build an entity framework connection string
EntityConnectionStringBuilder entityString = new EntityConnectionStringBuilder()
{
Provider = database.Provider,
Metadata = Settings.Default.Metadata,
ProviderConnectionString = sqlString.ToString()
};
}
首先,我如何真正改变数据上下文的连接?
其次,由于这是一个 Web API 项目,连接字符串(根据上述在登录时设置)是在整个用户交互过程中保持不变,还是应该每次都传递给我的数据上下文?
【问题讨论】:
-
我添加了一个小替代品,以防它符合您的心态/工具箱要求。
-
@Ivan-Mark 你是如何解决这部分问题的 其次,由于这是一个 web api 项目,连接字符串(在上面的登录时设置)是在整个用户交互过程中保持不变还是应该每次都传递给我的数据上下文
-
@NarendraSinghRathore 连接字符串存储在配置文件中,数据库名称(或其他名称)是关键。用户在登录时选择一个数据库,并将其存储在缓存中,其中键可能是用户名。用户发出请求,将其用户名作为标头传递,连接字符串被检索并传递给数据上下文。
-
@Ivan-MarkDebono 你能解释一下这个 cache 吗?您是在后端使用内存缓存或会话,还是在前端存储为 cookie。谢谢!
-
@NarendraSinghRathore MemoryCache in a singleton
标签: c# entity-framework asp.net-web-api connection-string