Search code examples
asp.net-identityentity-framework-core

Overriding Inherited mappings in OnModelCreating


I've a derived context from a base class that implements dbcontext. The base class OnModelCreating is like :

protected override void OnModelCreating(ModelBuilder builder)
{
    builder.Entity<TUser>(b =>
    {
       b.HasIndex(u => u.NormalizedUserName).HasName("UserNameIndex").IsUnique();
       ...
    }
}

The derived class OnModelBuilder:

protected override void OnModelCreating(ModelBuilder builder)
{
    base.OnModelCreating(builder);
    builder.Entity...(add my customization)
}

Is it possible to drop the "IsUnique" in the derived context?


Solution

  • In general the mappings that create something like HasKey, HasAlternateKey, HasIndex cannot be undone. But you can alter their attributes when possible.

    In this particular case, you can make the index non unique by specifying false for the optional parameter of IsUnique method:

    protected override void OnModelCreating(ModelBuilder builder)
    {
        base.OnModelCreating(builder);
        builder.Entity<TUser>(b =>
        {
           b.HasIndex(u => u.NormalizedUserName).IsUnique(false);
           ...
        }
    }