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);
        }