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()的情况下应用模式,还是需要为我在数据库中使用的每个模式创建新的上下文?
感谢
这么简单..感谢很多史蒂夫 - 那比我想它最终会更简单! –