2014-02-18 42 views
0

您好我正在处理ASP.NET MVC项目。目前,我正在使用Model第一种方法,我曾使用ADO.NET模型手动添加数据库。目前我有4个数据库,并且在web.config文件中有4个连接字符串。在ASP.NET MVC中动态生成连接字符串

自从我开发环境开始工作以来一直很好。但是现在我需要将我的代码移到现场,问题是,现场我们有40到50个数据库。

所以我应该做的是,当用户想要连接到特定的数据库时动态生成连接字符串。

我有这样的存储过程,它返回连接字符串和数据库名称。

例如,如果我有4个数据库名称,例如db1,db2,db3和db4,则需要将此数据库名称与我的存储过程结果数据库名称进行比较,如果两者相等,则生成等同于该数据库名称的连接字符串。

而且我还需要把它放在会话中,一旦我生成连接字符串,所以不需要为特定会话再次生成连接字符串。

有人可以帮助我吗?

+0

看看SqlConnectionBuilder .... http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlconnectionstringbuilder(v=vs.110).aspx。请记住,MVC在技术上没有会话概念。以任何形式的会话存储连接字符串并不是出于安全原因的好主意,但会话也不可伸缩。也许你需要在这里考虑你的方法,如果有必要的话。 –

+1

如果将所有这些连接字符串存储在web.config中,我可以知道这个问题吗? – ramiramilu

+0

@ramiramilu你的意思是我需要在web.config文件中存储所有40个连接字符串?然后我需要为所有数据库添加连接字符串,也因为我有存储过程返回连接字符串,我决定动态生成。 – Ajay

回答

0

EF DbContext作为constructor parameter采用连接字符串或连接字符串本身的名称。因此,在创建任何类型的连接字符串时都没有问题,并在创建DdContext时提供此类连接字符串。

在我们的应用程序中,我们有很多租户,并且每个租户都有一个数据库。对于每个请求,我们查找它是哪个租户,并从Settings DB向Tenant自己的数据库提供连接字符串。

我没有与Ado.Net合作过,但从我在Google看到的,这与Entity Framework非常相似(或基于)。因此,根据您的特定实现,必须有一种方法可以将数据库连接字符串提供给web.config