public async Task Storage_Upload_Download() { using (var f = new TempFile()) using (var db = new LiteDatabaseAsync(f.Filename)) //using (var db = new LiteDatabase(@"c:\temp\file.db")) { var fs = db.GetStorage <int>("_files", "_chunks"); var small = await fs.UploadAsync(10, "photo_small.png", new MemoryStream(_smallFile)); var big = await fs.UploadAsync(100, "photo_big.png", new MemoryStream(_bigFile)); _smallFile.Length.Should().Be((int)small.Length); _bigFile.Length.Should().Be((int)big.Length); var f0 = (await fs.FindAsync(x => x.Filename == "photo_small.png")).First(); var f1 = (await fs.FindAsync(x => x.Filename == "photo_big.png")).First(); this.HashFile(f0.OpenRead()).Should().Be(_smallHash); this.HashFile(f1.OpenRead()).Should().Be(_bigHash); // now replace small content with big-content var repl = await fs.UploadAsync(10, "new_photo.jpg", new MemoryStream(_bigFile)); (await fs.ExistsAsync(10)).Should().BeTrue(); var nrepl = await fs.FindByIdAsync(10); nrepl.Chunks.Should().Be(repl.Chunks); // update metadata await fs.SetMetadataAsync(100, new BsonDocument { ["x"] = 100, ["y"] = 99 }); // find using metadata var md = (await fs.FindAsync(x => x.Metadata["x"] == 100)).FirstOrDefault(); md.Metadata["y"].AsInt32.Should().Be(99); } }