我是MVC4框架和新手的新手。一直致力于许可应用程序,该应用程序必须为不同的产品使用不同的数据库(每个数据库包含一个产品的少数表 - 全部由专有许可工具生成)。我的应用程序应该能够支持各种产品上的CRUD功能,因此每个产品需要不同的DbContext
个对象。
据我所知,每个DbContext
对象都需要Web.config
文件中的连接字符串。我很难列出(Index.cshtml
)各种产品的现有许可证,使用DropDownList
控件,每当用户从中选择不同的产品时,我需要连接到不同的数据库的每个产品DropDownList
控制。
任何帮助都将受到高度赞赏。感谢。
答案 0 :(得分:9)
正如我理解你的问题,核心问题是当用户从DropDownList中选择不同的产品时,你正在努力连接到不同的数据库。如您所说,是的DbContext对象需要Web.config文件中的连接字符串。您可以在配置中指定multiple connection strings 您也可以将不同的连接字符串传递给DBContext constructor。通常,您的DAL /数据访问层或存储库层将从Web.Config / App.config中提取适当的连接字符串,并将其传递给DBContext构造函数。请参阅类似的方法here和here。
更新:
您无法与多个数据库共享相同的DbContext。每个数据库都需要multiple DbContexts。
其他 这样做很少,但如果你使用Repostory和Unit Of Work模式,你可以使用类似this的方法
您将拥有的每个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; }
}