public static void SetConfiguration(BulkConfigurationType type, Type tRequest, Type tEntity, IBulkConfiguration config)
        {
            if (!_configurations[type].ContainsKey(tRequest))
            {
                _configurations[type][tRequest] = new BulkRequestEntityConfigurationMap();
            }

            _configurations[type][tRequest][tEntity] = config;
        }
        public static void Configure <TEntity>(this BulkOperation <TEntity> operation, BulkConfigurationType type, DataContext <TEntity> context)
            where TEntity : class
        {
            var typeConfigs = BulkConfigurationManager.Configurations(type);

            if (!typeConfigs.ContainsKey(context.Configuration.RequestType))
            {
                typeConfigs[context.Configuration.RequestType] = new BulkRequestEntityConfigurationMap();
            }

            var requestConfigs = typeConfigs[context.Configuration.RequestType];

            if (!requestConfigs.ContainsKey(typeof(TEntity)))
            {
                requestConfigs[typeof(TEntity)] = new DefaultBulkConfiguration <TEntity>();
            }

            var configurations = new List <IBulkConfiguration>();

            foreach (var tRequest in context.Configuration.RequestType.BuildTypeHierarchyDown())
            {
                if (!typeConfigs.TryGetValue(tRequest, out requestConfigs))
                {
                    continue;
                }

                foreach (var tEntity in typeof(TEntity).BuildTypeHierarchyDown())
                {
                    if (requestConfigs.TryGetValue(tEntity, out var entityConfigs))
                    {
                        configurations.Add(entityConfigs);
                    }
                }
            }

            foreach (var configuration in configurations)
            {
                configuration.Apply(context.Configuration, operation);
            }
        }
 public static BulkRequestConfigurationMap Configurations(BulkConfigurationType type)
 => _configurations[type];