コード例 #1
0
        public virtual async Task SaveAsync(Blob blob)
        {
            var path = File(blob);

            if (path == null)
            {
                throw new InvalidOperationException("This blob is not linked to any entity.");
            }

            var fileDataToSave = await blob.GetFileDataAsync(); // Because file data will be lost in delete.

            if (path.Exists())
            {
                using (await GetAsyncLock(path.FullName).Lock())
                {
                    var data = await path.ReadAllBytesAsync();

                    if (data == null)
                    {
                        await DeleteAsync(blob);
                    }
                    else if (data.SequenceEqual(await blob.GetFileDataAsync()))
                    {
                        return;                                                         // Nothing changed.
                    }
                    else
                    {
                        await DeleteAsync(blob);
                    }
                }
            }

            using (await GetAsyncLock(path.FullName).Lock())
                await path.WriteAllBytesAsync(fileDataToSave);
        }
コード例 #2
0
        public virtual async Task SaveAsync(Blob blob)
        {
            var path = File(blob);

            if (path == null)
            {
                throw new InvalidOperationException("This blob is not linked to any entity.");
            }

            var fileDataToSave = await blob.GetFileDataAsync(); // Because file data will be lost in delete.

            await DeleteAsync(blob);

            await path.WriteAllBytesAsync(fileDataToSave);
        }