MVC4多个数据库

Kun*_*nal 0 asp.net-mvc multiple-models dbcontext asp.net-mvc-4

我是MVC4框架的新手,并且一直致力于许可应用程序,该应用程序必须为不同的产品使用不同的数据库(每个数据库包含一个产品的少数表 - 所有这些都由专有许可工具生成).我的应用程序应能够支持各种产品上的CRUD功能,因此DbContext每个产品需要与不同型号相关的多个对象.

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

任何帮助将受到高度赞赏.谢谢.

Spo*_*ock 9

据我了解你的问题,核心问题是,当用户从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; }
} 
Run Code Online (Sandbox Code Playgroud)