/// <inheritdoc/>
        public async Task<int> SaveFileMetaDataAsync(FileMetaDataToStore metaData)
        {
            int fileId;

            using (var connection = new SqlConnection(connectionString))
            {
                using (var command = new SqlCommand("InsertFileMetaData", connection))
                {
                    command.CommandType = CommandType.StoredProcedure;

                    command.Parameters.AddWithValue("@FileName", metaData.FileName);
                    command.Parameters.AddWithValue("@MimeType", metaData.MimeType);
                    command.Parameters.AddWithValue("@ApplicationName", metaData.ApplicationName);
                    command.Parameters.AddWithValue("@InternalStoragePath", metaData.StoragePath);
                    command.Parameters.AddWithValue("@Checksum", metaData.Checksum);

                    await connection.OpenAsync();
                    fileId = Convert.ToInt32(await command.ExecuteScalarAsync());
                }
            }

            return fileId;
        }
        public static FileMetaDataToStore ToMetaData(this FileWrapper fileWrapper)
        {
            var metaData = new FileMetaDataToStore();
            metaData.ApplicationName = fileWrapper.ApplicationName;
            metaData.FileName = fileWrapper.FileName;

            // if they don't send in a checksum then we are going to say ours is the master.
            if (string.IsNullOrEmpty(fileWrapper.Sha256Checksum))
            {
                metaData.Checksum = Checksummer.ComputeChecksum(fileWrapper.Payload);
            }
            else
            {
                metaData.Checksum = Checksummer.ComputeChecksum(fileWrapper.Payload);
            }

            metaData.MimeType = fileWrapper.MimeType;

            return metaData;
        }