我是MVC4框架的新手,并且一直致力于许可应用程序,该应用程序必须为不同的产品使用不同的数据库(每个数据库包含一个产品的少数表 - 所有这些都由专有许可工具生成).我的应用程序应能够支持各种产品上的CRUD功能,因此DbContext
每个产品需要与不同型号相关的多个对象.
据我所知,每个这样的DbContext
对象都需要Web.config
文件中的连接字符串.我正在努力列出(Index.cshtml
)各种产品的现有许可证,使用DropDownList
控制,每当用户从DropDownList
控件中选择不同的产品时,我需要连接到不同的数据库.
任何帮助将受到高度赞赏.谢谢.
据我了解你的问题,核心问题是,当用户从DropDownList中选择不同的产品时,你正在努力连接到不同的数据库.如您所说,是的DbContext对象需要Web.config文件中的连接字符串.您可以在配置中指定多个连接字符串.
您也可以将不同的连接字符串传递给DBContext构造函数.通常,您的DAL /数据访问层或存储库层将从Web.Config/App.config中提取适当的连接字符串,并将其传递给DBContext构造函数.在这里和这里看到类似的方法.
更新:
您不能与多个数据库共享相同的DbContext.每个数据库都需要多个DbContexts.
其他 很少有这样做的,但如果您使用Repostory和单位工作模式,您可以像使用的方法这
您将拥有的每个DbContext,您可以在上下文中与该数据库中的实体集相关联.像下面的东西
public class ProductContext : DbContext { public ProductContext () : base("connectionStringA") { } public DbSet<Product> Accounts { get; set; } } public class LicenceContext : DbContext { public LicenceContext () : base("connectionStringB") { } public DbSet<Licence> Licenses{ get; set; } }