public ModelGenerationExtension(ILogger logger, IConnectionStringLocator connectionStringLocator, IReadOnlyList <ErrorItem> errorList)
     : this(logger,
            connectionStringLocator,
            connectionString => new DatabaseCustomAttributeSource(connectionString),
            source => new ModelDocumentationUpdater(source),
            errorList)
 {
 }
        public ModelGenerationExtension(ILogger logger, IConnectionStringLocator connectionStringLocator, IReadOnlyList<ErrorItem> errorList)
            : this(logger,
				connectionStringLocator,
				connectionString => new DatabaseDocumentationSource(connectionString),
				source => new ModelDocumentationUpdater(source), 
				errorList)
        {
        }
 /// <summary>
 /// Initializes a new <see cref="ModelGenerationExtension"/>.
 /// </summary>
 /// <param name="logger">Used for logging informational messages</param>
 /// <param name="connectionStringLocator">Used for retrieving a connection string</param>
 /// <param name="customAttributeSourceFactory">Creates <see cref="ICustomAttributeSource"/> objects</param>
 /// <param name="modelUpdaterFactory">Creates objects that populate an EDMX model's documentation nodes</param>
 /// <param name="errorList">A read-only view of the Error List</param>
 public ModelGenerationExtension(
     ILogger logger,
     IConnectionStringLocator connectionStringLocator,
     Func <string, ICustomAttributeSource> customAttributeSourceFactory,
     Func <ICustomAttributeSource, IModelDocumentationUpdater> modelUpdaterFactory,
     IReadOnlyList <ErrorItem> errorList)
 {
     _logger = logger;
     _connectionStringLocator      = connectionStringLocator;
     _customAttributeSourceFactory = customAttributeSourceFactory;
     _modelUpdaterFactory          = modelUpdaterFactory;
     _errorList = errorList;
 }
        /// <summary>
        /// Initializes a new <see cref="ModelGenerationExtension"/>.
        /// </summary>
        /// <param name="logger">Used for logging informational messages</param>
        /// <param name="connectionStringLocator">Used for retrieving a connection string</param>
        /// <param name="documentationSourceFactory">Creates <see cref="IDocumentationSource"/> objects</param>
        /// <param name="modelUpdaterFactory">Creates objects that populate an EDMX model's documentation nodes</param>
        /// <param name="errorList">A read-only view of the Error List</param>
        public ModelGenerationExtension(
			ILogger logger, 
			IConnectionStringLocator connectionStringLocator, 
			Func<string, IDocumentationSource> documentationSourceFactory,
			Func<IDocumentationSource, IModelDocumentationUpdater> modelUpdaterFactory,
			IReadOnlyList<ErrorItem> errorList)
        {
            _logger = logger;
            _connectionStringLocator = connectionStringLocator;
            _documentationSourceFactory = documentationSourceFactory;
            _modelUpdaterFactory = modelUpdaterFactory;
            _errorList = errorList;
        }