实体框架核心问题-更新数据库创建“用户”模式

时间:2018-12-10 18:20:41

标签: sql asp.net entity-framework asp.net-core entity-framework-core

我已经在使用.NET Core 2.0(最初为1.0)和EF Core的生产应用程序上工作了一段时间。

这是代码优先设计的应用程序,因此所有数据库更改都是通过Migrations完成的。

直到最近一次部署,Update-Database才能正确进行更改-但是,最近每次添加模型时,它一直在创建新的模式(而不是像往常一样添加到dbo模式)。

示例:

New Class Model: Test.cs
Table created in Database: DOMAIN\CurrentUser.Test

关于为什么会这样的任何想法?

我想我可以深入研究migrationBuilder来确定它是如何进行Schema决策的,但是似乎必须进行一些简单的更改才能更改行为。

“ DOMAIN \ CurrentUser”在相关服务器上具有dbo权限。

1 个答案:

答案 0 :(得分:0)

要从EF Core更改架构,请尝试使用builder.HasDefaultSchema("newschema");builder.Entity<User>().ToTable进行配置。

用于更改所有表的架构。

public class ApplicationDbContext : IdentityDbContext
{
    public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options)
        : base(options)
    {
    }
    public DbSet<User> User { get; set; }
    protected override void OnModelCreating(ModelBuilder builder)
    {
        base.OnModelCreating(builder);
        builder.HasDefaultSchema("newschema");
    }
}

用于更改特定表的架构。

public class ApplicationDbContext : IdentityDbContext
{
    public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options)
        : base(options)
    {
    }
    public DbSet<User> User { get; set; }
    protected override void OnModelCreating(ModelBuilder builder)
    {
        base.OnModelCreating(builder);
        builder.Entity<User>().ToTable("User", "newSchema");
    }
}
相关问题