2016-02-29 74 views
1

我有一个ASP.NET 5的Web API,我希望可以为多个模型使用单个的dbcontext。这些模型指向我的数据库中具有不同架构的表。下面实体框架7 - 单个dbcontext,不同的架构

该模型包含多个类

  • 验证
  • 研究

简化了一点:Auth.cs

public class MyContext : DbContext 
    { 
     public DbSet<Auth.App> Apps { get; set; } 
     public DbSet<Auth.Permission> Permissions { get; set; } 
     public DbSet<Study.StudyLink> StudyLinks { get; set; } 
    } 
    protected override void OnModelCreating(ModelBuilder modelBuilder) 
    { 
     foreach (var entity in modelBuilder.Model.GetEntityTypes()) 
     { 
      if (entity.Name.Contains("Auth+")) 
      { 
       modelBuilder.HasDefaultSchema("auth"); // Switch to the auth schema 
       modelBuilder.Entity(entity.Name).ToTable(entity.Name.Replace("myproject.Models.Auth+", string.Empty)); 
      } 
      if (entity.Name.Contains("Study+")) 
      { 
       modelBuilder.HasDefaultSchema("study"); // Switch to the study schema 
       modelBuilder.Entity(entity.Name).ToTable(entity.Name.Replace("myproject.Models.Study+", string.Empty)); 
      } 
     } 
    } 

只需使用验证模型,我能改变默认模式,并可以访问表没有问题..当我添加研究模型,th e modelBuilder.Model.GetEntityTypes()foreach调出Auth和Study模型,切换默认模式,这意味着我无法访问Auth模式,因为它切换到学习模式。

是否有某种方法可以在不使用HasDefaultSchema()的情况下应用模式,还是需要为我在数据库中使用的每个模式创建新的上下文?

感谢

回答