Sql 实体框架核心问题-更新数据库创建“;“用户”;模式
我已经在使用.NETCore2.0(最初是1.0)和EFCore的生产应用程序上工作了很长时间 这是一个代码先行设计的应用程序,因此所有数据库更改都是通过迁移完成的 在最近的部署之前,updatedatabase会正确地进行更改—但是,最近每次添加模型时,它都会创建新的模式(而不是像正常情况一样添加到dbo模式) 例如:Sql 实体框架核心问题-更新数据库创建“;“用户”;模式,sql,asp.net,entity-framework,asp.net-core,entity-framework-core,Sql,Asp.net,Entity Framework,Asp.net Core,Entity Framework Core,我已经在使用.NETCore2.0(最初是1.0)和EFCore的生产应用程序上工作了很长时间 这是一个代码先行设计的应用程序,因此所有数据库更改都是通过迁移完成的 在最近的部署之前,updatedatabase会正确地进行更改—但是,最近每次添加模型时,它都会创建新的模式(而不是像正常情况一样添加到dbo模式) 例如: New Class Model: Test.cs Table created in Database: DOMAIN\CurrentUser.Test 你知道为什么会这样吗
New Class Model: Test.cs
Table created in Database: DOMAIN\CurrentUser.Test
你知道为什么会这样吗
我想我可以深入研究migrationBuilder,了解它是如何做出模式决策的,但似乎有一些简单的东西必须改变才能改变行为
“DOMAIN\CurrentUser”在相关服务器上具有dbo权限。要从
EF Core
更改架构,请尝试使用builder.HasDefaultSchema(“newschema”)进行配置代码>或builder.Entity().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类ApplicationDbContext:IdentityDbContext
{
公共应用程序DBContext(DbContextOptions选项)
:基本(选项)
{
}
公共数据库集用户{get;set;}
模型创建时受保护的覆盖无效(ModelBuilder)
{
基于模型创建(生成器);
builder.hasdaultschema(“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");
}
}
public类ApplicationDbContext:IdentityDbContext
{
公共应用程序DBContext(DbContextOptions选项)
:基本(选项)
{
}
公共数据库集用户{get;set;}
模型创建时受保护的覆盖无效(ModelBuilder)
{
基于模型创建(生成器);
builder.Entity().ToTable(“用户”、“新闻模式”);
}
}
与我们分享生成的与测试
模型相关的迁移。迁移文件中是否有DOMAIN\CurrentUser
?检查数据库是否更改了数据库中的默认模式。我已经检查了迁移文件中的SQL,其中与模式无关。今晚或明天,我会在下面尝试你的答案