* AVObjectController.cs: chore: 修复保存嵌套 AVObject 的错误
* AVObject.cs:
parent
6c62ed2707
commit
afebf78444
|
@ -3,7 +3,6 @@ using System.Linq;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using LeanCloud.Utilities;
|
|
||||||
using System.Net.Http;
|
using System.Net.Http;
|
||||||
|
|
||||||
namespace LeanCloud.Storage.Internal {
|
namespace LeanCloud.Storage.Internal {
|
||||||
|
|
|
@ -455,12 +455,9 @@ string propertyName
|
||||||
itemsToVisit = dict.Values;
|
itemsToVisit = dict.Values;
|
||||||
} else if (root is IList list) {
|
} else if (root is IList list) {
|
||||||
itemsToVisit = list;
|
itemsToVisit = list;
|
||||||
} else if (traverseAVObjects) {
|
} else if (traverseAVObjects && root is AVObject obj) {
|
||||||
var obj = root as AVObject;
|
|
||||||
if (obj != null) {
|
|
||||||
itemsToVisit = obj.Keys.ToList().Select(k => obj[k]);
|
itemsToVisit = obj.Keys.ToList().Select(k => obj[k]);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
if (itemsToVisit != null) {
|
if (itemsToVisit != null) {
|
||||||
foreach (var i in itemsToVisit) {
|
foreach (var i in itemsToVisit) {
|
||||||
if (!seen.Contains(i)) {
|
if (!seen.Contains(i)) {
|
||||||
|
@ -591,11 +588,11 @@ string propertyName
|
||||||
var uniqueObjects = new HashSet<AVObject>(objects, new IdentityEqualityComparer<AVObject>());
|
var uniqueObjects = new HashSet<AVObject>(objects, new IdentityEqualityComparer<AVObject>());
|
||||||
|
|
||||||
// 先保存文件对象(后面可以考虑将 AVFile 作为 AVObject 的子类型进行保存)
|
// 先保存文件对象(后面可以考虑将 AVFile 作为 AVObject 的子类型进行保存)
|
||||||
var saveDirtyFileTasks = DeepTraversal(obj, true)
|
//var saveDirtyFileTasks = DeepTraversal(obj, true)
|
||||||
.OfType<AVFile>()
|
// .OfType<AVFile>()
|
||||||
.Where(f => f.IsDirty)
|
// .Where(f => f.IsDirty)
|
||||||
.Select(f => f.SaveAsync(cancellationToken: cancellationToken)).ToList();
|
// .Select(f => f.SaveAsync(cancellationToken: cancellationToken)).ToList();
|
||||||
await Task.WhenAll(saveDirtyFileTasks);
|
//await Task.WhenAll(saveDirtyFileTasks);
|
||||||
|
|
||||||
IEnumerable<AVObject> remaining = new List<AVObject>(uniqueObjects);
|
IEnumerable<AVObject> remaining = new List<AVObject>(uniqueObjects);
|
||||||
while (remaining.Any()) {
|
while (remaining.Any()) {
|
||||||
|
|
Loading…
Reference in New Issue