public EntityTypeConfiguration <TEntityType> Map <TDerived>( Action <EntityMappingConfiguration <TDerived> > derivedTypeMapConfigurationAction) where TDerived : class, TEntityType { Check.NotNull(derivedTypeMapConfigurationAction, "derivedTypeMapConfigurationAction"); var entityMappingConfiguration = new EntityMappingConfiguration <TDerived>(); var tableName = _entityTypeConfiguration.GetTableName(); if (tableName != null) { entityMappingConfiguration.EntityMappingConfigurationInstance.TableName = tableName; } derivedTypeMapConfigurationAction(entityMappingConfiguration); if (typeof(TDerived) == typeof(TEntityType)) { _entityTypeConfiguration.AddMappingConfiguration( entityMappingConfiguration.EntityMappingConfigurationInstance); } else { _entityTypeConfiguration .AddSubTypeMappingConfiguration( typeof(TDerived), entityMappingConfiguration.EntityMappingConfigurationInstance); } return(this); }