Asp.net mvc 不同数据库中的多个DBContext

Asp.net mvc 不同数据库中的多个DBContext,asp.net-mvc,entity-framework,Asp.net Mvc,Entity Framework,我第一次接触EF代码,现在已经享受了好几个星期了。我要处理两个数据库(都在同一个Sqlserver中)。第一个数据库包含一个表,我只需要引用它的主键,它与我创建的表“逻辑”相关(第二个DbContext——第二个数据库)。基于这个键,我将查询我的第二个DbContext表(mvc站点的实际相关表)。顺便说一下,Customer有0..*个CustomerUsers 第一个dbcontext: public class Customer { [StringLength(10, Minim

我第一次接触EF代码,现在已经享受了好几个星期了。我要处理两个数据库(都在同一个Sqlserver中)。第一个数据库包含一个表,我只需要引用它的主键,它与我创建的表“逻辑”相关(第二个DbContext——第二个数据库)。基于这个键,我将查询我的第二个DbContext表(mvc站点的实际相关表)。顺便说一下,Customer有0..*个CustomerUsers

第一个dbcontext:

public class Customer
{

    [StringLength(10, MinimumLength = 3), Required]
    public string CompanyID { get; set; }

    [StringLength(8, MinimumLength = 3)]
    [DatabaseGenerated(DatabaseGeneratedOption.None)]
    public string CustomerID { get; set; }


    [StringLength(500)]
    public string CustomerName { get; set; }


    //*Initially, under the same dbContext, they were related, but now am separating
    //them because of physical database separation; hence the navigation property   
    //public virtual ICollection<CustomerUser> CustomerUsers { get; set; }

}
关于模型创建方法:

modelBuilder.Entity<Customer>()
            .HasKey(c => new { c.CompanyID, c.CustomerID});
modelBuilder.Entity<CustomerUser>()
            .HasKey(c => new { c.CustomerUserID });

        modelBuilder.Entity<CustomerUser>()
            .HasRequired(p => p.Customer)
            .WithMany(c => c.CustomerUsers)
            .HasForeignKey(p => new {p.CompanyID, p.CustomerID});
modelBuilder.Entity()
.HasKey(c=>new{c.CustomerUserID});
modelBuilder.Entity()
.has必需(p=>p.Customer)
.WithMany(c=>c.CustomerUsers)
.HasForeignKey(p=>new{p.CompanyID,p.CustomerID});
如何以及在何处声明我的DBContext?目前,我有一个web应用程序引用的程序集。另外,这对我的部署有什么影响?仅用于引用其键的一个表已经存在,而其余的表还需要在SqlServer中创建(它们存在于我的VS2012服务器资源管理器中)

在这种设计中,我会遇到任何与部署相关的问题吗

如何以及在何处声明我的DBContext

大问题。数据访问层是典型的。不在核心/域层中。将核心与EF耦合

目前,我有一个web应用程序引用的程序集。也, 这对我的部署有什么影响

如果您不使用核心/域层+数据访问层+UI层,那么开发将与数据访问工具紧密耦合

仅用于引用其键的表已经存在, 而其余的表,我还没有在中创建 SqlServer(它们存在于我的VS2012服务器资源管理器中)。会在那里吗 我在这个设计中会遇到任何与部署相关的问题吗

不,从一个解决方案进行多上下文多数据库访问对EF来说不是问题。 尽管实例化上下文的方式需要仔细管理。
嗨,菲尔,谢谢你的回复。正如您提到的,EF对多个DB访问没有任何问题(我是EF的新手,我的理解是每个DB访问都由一个DbContext表示?)。这是否意味着我的web.config中可以有2个连接字符串,例如:(上面的连接字符串将指向部署环境中的实际数据库)是的,您可以有多个连接字符串,或者您可以将连接信息传递给构造函数中的DbContent
modelBuilder.Entity<CustomerUser>()
            .HasKey(c => new { c.CustomerUserID });

        modelBuilder.Entity<CustomerUser>()
            .HasRequired(p => p.Customer)
            .WithMany(c => c.CustomerUsers)
            .HasForeignKey(p => new {p.CompanyID, p.CustomerID});