MVC4多个数据库

时间:2013-12-03 11:13:03

标签: asp.net-mvc asp.net-mvc-4 dbcontext multiple-models

我是MVC4框架和新手的新手。一直致力于许可应用程序,该应用程序必须为不同的产品使用不同的数据库(每个数据库包含一个产品的少数表 - 全部由专有许可工具生成)。我的应用程序应该能够支持各种产品上的CRUD功能,因此每个产品需要不同的DbContext个对象。

据我所知,每个DbContext对象都需要Web.config文件中的连接字符串。我很难列出(Index.cshtml)各种产品的现有许可证,使用DropDownList控件,每当用户从中选择不同的产品时,我需要连接到不同的数据库的每个产品DropDownList控制。

任何帮助都将受到高度赞赏。感谢。

1 个答案:

答案 0 :(得分:9)

正如我理解你的问题,核心问题是当用户从DropDownList中选择不同的产品时,你正在努力连接到不同的数据库。如您所说,是的DbContext对象需要Web.config文件中的连接字符串。您可以在配置中指定multiple connection strings 您也可以将不同的连接字符串传递给DBContext constructor。通常,您的DAL /数据访问层或存储库层将从Web.Config / App.config中提取适当的连接字符串,并将其传递给DBContext构造函数。请参阅类似的方法herehere

更新:

您无法与多个数据库共享相同的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; }
}