【发布时间】:2016-03-01 04:00:31
【问题描述】:
我有一个 ASP.NET 5 web api,我希望将一个 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));
}
}
}
仅使用 Auth 模型,我能够更改默认模式并且可以毫无问题地访问表。当我添加 Study 模型时,modelBuilder.Model.GetEntityTypes() foreach 会同时显示 Auth 和 Study 模型,切换默认架构也是如此,这意味着我无法访问 Auth 架构,因为它切换到学习。
有什么方法可以在不使用 HasDefaultSchema() 的情况下应用架构,还是需要为我在数据库中使用的每个架构创建一个新的上下文?
谢谢
【问题讨论】:
标签: asp.net-mvc entity-framework web-services