public override async Task <int> SaveChangesAsync(
            IReadOnlyList <IUpdateEntry> entries, CancellationToken cancellationToken = default)
        {
            var rowsAffected = 0;

            // ReSharper disable once ForCanBeConvertedToForeach
            for (var i = 0; i < entries.Count; i++)
            {
                var entry      = entries[i];
                var entityType = entry.EntityType;

                Debug.Assert(!entityType.IsAbstract());

                if (!_documentCollections.TryGetValue(entityType, out var documentCollection))
                {
                    _documentCollections.Add(
                        entityType, documentCollection = _documentCollectionFactory.Create(entityType));
                }

                await documentCollection.SaveAsync(entry, cancellationToken);

                rowsAffected++;
            }

            return(rowsAffected);
        }