VAF - Is there a way to update/save properties of multiple objects in batches?

Hi,

I'm fairly new to the VAFs but I have encountered this a few times.

[TaskProcessor(MyTaskId, MyTaskType, TransactionMode = TransactionMode.Unsafe, MaxRequeues = 0, MaxRetries = 0)]
[ShowOnDashboard("My Task Processor", ShowRunCommand = true)]
public void MyTaskProcessor(ITaskProcessingJob<TaskDirective> job)
{
	//ID, data
	Dictionary<int, ApiData> apiDataItems = FetchDataFromSomeApi();

	var sb = new MFSearchBuilder(job.Vault)
		.ObjType(Configuration.Structure.Objects.SomeObjType)
		.Class(Configuration.Structure.Classes.SomeClass)
		.PropertyNotMissing(Configuration.Structure.Properties.SomeTextProperty)
		.Deleted(false)
		.IsCheckedOut(false);

	List<ObjVerEx> foundObjects = sb.FindEx();

	foreach (var obj in foundObjects)
	{
		if (apiDataItems.TryGetValue(obj.ID, out var item))
		{
			//Could check here if modified
			obj.SaveProperty(Configuration.Structure.Properties.SomeTextProperty, MFDataType.MFDatatypeText, item.Value);
		}
	}
}

In the example above I have to call SaveProperty which is a pretty slow operation when called multiple times in a row. Is there a way to update properties in batches?

- Eetu

Parents Reply Children