gpt4 book ai didi

c# - ASP.NET Core多个dbcontext无法添加迁移

转载 作者:太空宇宙 更新时间:2023-11-03 14:59:57 28 4
gpt4 key购买 nike

我有 2 个 DbContext:

services.AddDbContext<ConfigDbContext>(options => options.UseSqlServer(Configuration["Data:ConfigSQLServer:ConnectionString"].ToString(), t => t.MigrationsAssembly("App.Web")));

services.AddDbContext<AppDbContext>(options => options.UseSqlServer(Configuration["Data:AppSQLServer:ConnectionString"].ToString(), t => t.MigrationsAssembly("App.Web")));

当我尝试运行时

dotnet ef migrations add Initial -c AppDbContext

我得到:

No DbContext named 'AppDbContext' was found

如果我运行:

dotnet ef dbcontext list

结果是:

FullNamespace.ConfigDbContext

找不到第二个 DbContext AppDbContext

ConfigDbCContext:

public class ConfigDbContext : DbContext
{
public ConfigDbContext()
{

}

public ConfigDbContext(DbContextOptions<ConfigDbContext> options) : base(options)
{

}

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
}
}

AppDb上下文:

public class AppDbContext : IdentityDbContext<ApplicationUser, ApplicationRole, Guid>
{
public AppDbContext()
{

}

public ConfigDbContext(DbContextOptions<AppDbContext> options) : base(options)
{

}

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
}
}

最佳答案

我有类似的设置,除了我的 DbContext 和我的 IdentityDbCotenxt 位于 Web 项目之外的不同程序集中。

ConfigDb上下文

// Remove the parameter-less constructor

public class ConfigDbContext : DbContext
{
public ConfigDbContext(DbContextOptions<ConfigDbContext> options) : base(options)
{ }

rotected override void OnModelCreating(ModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
}
}

AppDb上下文

// Remove the parameter-less constructor
// Rename the constructor to AppDbContext, instead of ConfigDbContext

public class AppDbContext : IdentityDbContext<ApplicationUser, ApplicationRole, Guid>
{
public AppDbContext(DbContextOptions<AppDbContext> options) : base(options)
{ }

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
}
}

同样在我的 IdentityDbContext 中,如果您将主键更改为 Guid,我必须覆盖 AppUserClaimAppUserRoleAppUserLogin AppRoleClaimAppUserToken

我的 IdentityDbContext 示例

public class AppIdentityDbContext : IdentityDbContext<AppUser, AppRole, Guid, AppUserClaim, AppUserRole,
AppUserLogin, AppRoleClaim, AppUserToken>
{
public AppIdentityDbContext(DbContextOptions<AppIdentityDbContext> options)
: base(options)
{
}

protected override void OnModelCreating(ModelBuilder builder)
{
base.OnModelCreating(builder);

builder.Entity<AppUser>().ToTable("User");
builder.Entity<AppRole>().ToTable("Role");
builder.Entity<AppUserRole>().ToTable("UserRole");

builder.Entity<AppUserClaim>().ToTable("UserClaim");
builder.Entity<AppRoleClaim>().ToTable("RoleClaim");

builder.Entity<AppUserLogin>().ToTable("UserLogin");
builder.Entity<AppUserToken>().ToTable("UserToken");
}
}

我不认为这是问题所在,但如果我从一开始就提出的建议没有解决问题,可以尝试一下。

关于c# - ASP.NET Core多个dbcontext无法添加迁移,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46710311/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com