/// <summary>
        /// Creates a basic worker to manipulate missing foreign key values.
        /// </summary>
        /// <param name="targetTableName">Target name of the table to validate against.</param>
        /// <param name="metadataRepository">Metadata repository.</param>
        protected MissingForeignKeyWorkerBase(string targetTableName, IMetadataRepository metadataRepository)
        {
            if (string.IsNullOrEmpty(targetTableName))
            {
                throw new ArgumentNullException("targetTableName");
            }
            if (metadataRepository == null)
            {
                throw new ArgumentNullException("metadataRepository");
            }
            var dataSource = metadataRepository.DataSourceGet();

            _foreignTable = dataSource.Tables.SingleOrDefault(m => string.Compare(m.NameTarget, targetTableName, StringComparison.OrdinalIgnoreCase) == 0);
            if (_foreignTable == null)
            {
                throw new DeliveryEngineSystemException(Resource.GetExceptionMessage(ExceptionMessage.TableNotFound, targetTableName));
            }
        }