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