Search code examples
entity-framework-coreef-core-3.0

Is column a discriminator?


If a user does something like this inside OnModelCreating:

modelBuilder.Entity<MyBaseEntity>.HasDiscriminiator(x => x.EntityType)

Outside OnModelCreating, is it possible to either get the full list of discriminator columns or check if a particular column was configured as discriminator?

Thanks.


Solution

  • In EF Core 3.x it can be obtained for a given IEntityType using the GetDiscriminatorProperty method, e.g.

    var discriminatorProperty = dbContext.Model
        .FindEntityType(typeof(MyBaseEntity))
        .GetDiscriminatorProperty();
    

    Some other useful extension methods are GetDiscriminatorValue, GetDerivedTypes, GetRootType etc.