Имея собственный класс Client в качестве IdSrvClient и реализуя следующий интерфейс для сопоставления его с базой данных
public class IdSrvClient : Client, IEntityBase
{
//adding my extra properties
}
public class IdSrvClientMap : IEntityTypeConfiguration<IdSrvClient>
{
public void Configure(EntityTypeBuilder<IdSrvClient> builder)
{
builder.ToTable("Client", "Security");
//builder.HasQueryFilter(app => !app.IsDeleted);
builder.Property(x => x.Id).ValueGeneratedOnAdd();
builder.Property(x => x.ClientId).HasMaxLength(200).IsRequired();
builder.Property(x => x.ProtocolType).HasMaxLength(200).IsRequired();
builder.Property(x => x.ClientName).HasMaxLength(200);
builder.Property(x => x.ClientUri).HasMaxLength(2000);
builder.Property(x => x.LogoUri).HasMaxLength(2000);
builder.Property(x => x.Description).HasMaxLength(1000);
builder.Property(x => x.FrontChannelLogoutUri).HasMaxLength(2000);
builder.Property(x => x.BackChannelLogoutUri).HasMaxLength(2000);
builder.Property(x => x.ClientClaimsPrefix).HasMaxLength(200);
builder.Property(x => x.PairWiseSubjectSalt).HasMaxLength(200);
builder.HasIndex(x => x.ClientId).IsUnique();
builder.HasMany(x => x.AllowedGrantTypes).WithOne(x => x.Client).IsRequired().OnDelete(DeleteBehavior.Cascade);
builder.HasMany(x => x.RedirectUris).WithOne(x => x.Client).IsRequired().OnDelete(DeleteBehavior.Cascade);
builder.HasMany(x => x.PostLogoutRedirectUris).WithOne(x => x.Client).IsRequired().OnDelete(DeleteBehavior.Cascade);
builder.HasMany(x => x.AllowedScopes).WithOne(x => x.Client).IsRequired().OnDelete(DeleteBehavior.Cascade);
builder.HasMany(x => x.ClientSecrets).WithOne(x => x.Client).IsRequired().OnDelete(DeleteBehavior.Cascade);
builder.HasMany(x => x.Claims).WithOne(x => x.Client).IsRequired().OnDelete(DeleteBehavior.Cascade);
builder.HasMany(x => x.IdentityProviderRestrictions).WithOne(x => x.Client).IsRequired().OnDelete(DeleteBehavior.Cascade);
builder.HasMany(x => x.AllowedCorsOrigins).WithOne(x => x.Client).IsRequired().OnDelete(DeleteBehavior.Cascade);
builder.HasMany(x => x.Properties).WithOne(x => x.Client).IsRequired().OnDelete(DeleteBehavior.Cascade);
}
}
с этим DbContext, Ef не может сгенерировать имя схемы, которое я явно передаю
public class IdSrvConfigurationDbContext : ConfigurationDbContext
{
public IdSrvConfigurationDbContext(DbContextOptions<ConfigurationDbContext> options, ConfigurationStoreOptions storeOptions) : base(options, storeOptions)
{
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
modelBuilder.ApplyConfiguration(new IdSrvClientMap());
}
}
Он добавляет дополнительные столбцы, которые я хочу для своих таблиц, но не изменяю схему.Что здесь не так?