c# - 由于不同的上下文缺少 PK,Entity Framework Core 迁移失败
问题描述
public class InventarioContext : DbContext
{
public InventarioContext() : base()
{
// I'm a default constructor!
}
public InventarioContext(DbContextOptions<InventarioContext> options) : base(options)
{
}
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
}
// Inventario Ciclico
public DbSet<InventarioConfiguracao> InventarioConfiguracoes { get; set; }
public DbSet<InventarioRegisto> InventarioRegistos { get; set; }
public DbSet<Etiqueta> Etiquetas { get; set; }
public DbSet<Localizacao> Localizacoes { get; set; }
public DbSet<Armazem> Armazens { get; set; }
public DbSet<Operador> Operadores { get; set; }
}
我的第二个背景
public class AbastecimentoContext : DbContext
{
public AbastecimentoContext(DbContextOptions<AbastecimentoContext> options) : base(options)
{
}
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<UserRole>()
.HasKey(ur => new { ur.UserId, ur.RoleId });
modelBuilder.Entity<UserRole>()
.HasOne(ur => ur.User)
.WithMany(u => u.UserRoles)
.HasForeignKey(ur => ur.UserId);
modelBuilder.Entity<UserRole>()
.HasOne(ur => ur.Role)
.WithMany(r => r.UserRoles)
.HasForeignKey(ur => ur.RoleId);
modelBuilder.Entity<User>()
.HasIndex(u => u.Username)
.IsUnique();
modelBuilder.Entity<Colaborador>()
.HasIndex(c => c.Email)
.IsUnique();
modelBuilder.Entity<Role>()
.HasIndex(r => r.Nome)
.IsUnique();
modelBuilder.Entity<Consumo>()
.HasIndex(c => new { c.Referencia, c.UAP })
.IsUnique();
modelBuilder.Entity<Parametro>()
.HasIndex(p => new { p.Referencia, p.UAP })
.IsUnique();
modelBuilder.Entity<Horario>()
.HasIndex(h => new { h.Inicio, h.Fim, h.Uap })
.IsUnique();
modelBuilder.Entity<Feriado>()
.HasIndex(f => f.DataInicio)
.IsUnique();
modelBuilder.Entity<Feriado>()
.HasIndex(f => f.DataFim)
.IsUnique();
modelBuilder.Entity<Horario>()
.HasIndex(h => h.IsDeleted)
.HasName("XI_hHorarios_IsDeleted")
.HasFilter("([IsDeleted]=(0))");
}
// Entitites
public DbSet<Colaborador> Colaboradores { get; set; }
public DbSet<User> Users { get; set; }
public DbSet<Role> Roles { get; set; }
public DbSet<UserRole> UserRoles { get; set; }
// Abastecimento
public DbSet<Parametro> Parametros { get; set; }
public DbSet<ListaAbastecimento> ListasAbastecimento { get; set; }
public DbSet<Referencia> Referencias { get; set; }
public DbSet<Consumo> Consumos { get; set; }
public DbSet<Feriado> Feriados { get; set; }
public DbSet<Horario> Horarios { get; set; }
public DbSet<Uap> Uaps { get; set; }
public DbSet<Calendario> Calendario { get; set; }
public object InventarioConfiguracoes { get; internal set; }
}
如您所见,它们中的任何一个都没有关系。
我什至试图删除外键属性
Inventariocontext 上的 ColaboradorId
不管它不会让我为 InventarioContext 创建迁移,当它已经从其他上下文创建时,它总是说缺少 UserRoles 的主键。
解决方案
推荐阅读
- php - GraphQL 查询未从 Laravel 返回任何内容
- ag-grid - AG-grid 刷新固定行的总计
- c - 我正在尝试编写一个 C 代码来对字符串进行排序,但在第 13 行总是显示一条错误消息
- google-maps - 需要帮忙!如何使用它的 API 选择特定的多边形以在谷歌地图上绘制。融合表中的数据
- angular6 - DropBox Saver:按钮未显示。(角度 6)
- angular - 如何从Angular 6中的父组件调用子组件的方法
- r - 为特定值添加面板数据序列
- google-cloud-platform - 如何通过服务帐户使用 gcloud?
- wordpress - Wordress 前端帖子类别数组
- sha1 - 我正在使用 C# 编写 3DES(使用 SHA1 HASH)加密算法。密钥大小错误