我已经在使用.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权限。
答案 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");
}
}