首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Asp.net Mvc3应用程序中的多个Web.config

Asp.net Mvc3应用程序中的多个Web.config
EN

Stack Overflow用户
提问于 2012-06-12 15:54:51
回答 1查看 361关注 0票数 0

我的项目规范是带有实体框架的ASP.net MVC3应用程序。

问题是,客户智慧数据库将被创建。个人应用程序个人数据库对我来说工作得很好。

但我想要一个单一的应用程序和多个数据库应该与之一起使用。

怎样才能达到同样的效果?

EN

回答 1

Stack Overflow用户

发布于 2012-06-12 16:18:15

与使用默认构造函数和web.config驱动的连接字符串创建实体连接不同,您需要手动构建实体连接字符串,并使用其他构造函数之一在构造时将其提供给它。其中一个通常接受字符串,另一个也接受EntityConnection实例。

如果唯一更改的是数据库的名称,那么您可能可以使用格式字符串-其中可能采用当前在web.config中的字符串-它将如下所示:

metadata=res://*;provider=System.Data.SqlClient;provider connection string="Data Source=[server];Initial Catalog=[db];User ID=[user];Password=[password]"

注意-这里的[server]__、[db]__、[user][password]都是占位符。

并简单地用{0}替换[db]

然后-假设您可以从用户派生数据库名称,您可能会执行类似以下操作:

代码语言:javascript
复制
public string BaseConnectionString {
  get{
    //TODO: Get base connection string - can just bake in the constant string with
    //with the format placeholder.  A better thing would be to add it as an 
    //AppSetting in web.config
  }
}

//this now becomes you're primary way of getting a database connection for a user.
public MyEntities GetEntities(User user)
{
  var eConnectionString = GetConnectionString(user);

  return new MyEntities(eConnectionString);
}

public string GetConnectionString(User user)
{
   var dbName = get_db_name_for_user(user);
   return string.Format(BaseConnectionString, dbName);
}

这只是实现这一点的一种方法。在IOC环境中,可以将所有这些都隐藏在一个简单的Resolve<>调用后面。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10992552

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档