Skip to content

Repository files navigation

EntityFramework.DiscriminatorIndex

Help us to create index on discriminator columns by generating migration index operations (create, rename and drop).

Setup

Migration Configuration file:

internal sealed class Configuration : DbMigrationsConfiguration<DbContext>
{
    public Configuration()
    {
        this.AddSupportToDiscriminatorIndex();
    }
}

DbConfiguration:

public class DbConfiguration : System.Data.Entity.DbConfiguration
{
    public DbConfiguration()
    {
        SetMetadataAnnotationSerializer(
            DiscriminatorIndexAnnotation.AnnotationName,
            () => new DiscriminatorIndexAnnotationSerializer());
    }
}

##How To Use?

Entity Type Configuration

To configure the index for a type, use the extention method HasIndexOnDiscriminator() of the EntityTypeConfiguration:

public class DbContext: System.Data.Entity.DbContext
{
    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Entity<MyEntity>().HasIndexOnDiscriminator();
        base.OnModelCreating(modelBuilder);
    }
}

Optionally, we can customize inform the column name, and also set the index name.

modelBuilder.Entity<MyEntity>().HasIndexOnDiscriminator(
    columnName: "MyDiscriminator", 
    indexName: "IX_Entity_Discriminator");

Convention

Using the convention, all columns named as "Discriminator" in the database will be indexed.

public class DbContext: System.Data.Entity.DbContext
{
    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Conventions.Add<DiscriminatorIndexConvention>();
        base.OnModelCreating(modelBuilder);
    }
}

Optionally, we can provide an alternative column name to search for:

modelBuilder.Conventions.Add(new DiscriminatorIndexConvention(discriminatorColumnName: "CustoDiscriminator"));

When using the convention, we can also ignore some entity:

modelBuilder.Entity<MyEntity>()
    .HasTableAnnotation(DiscriminatorIndexAnnotation.AnnotationName, null);

... or yet replace the default convention using the HasIndexOnDiscriminator extension method.

About

Help us to create index on discriminator columns by generating migration index operations (create, rename and drop).

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages