private void InsertOrUpdateChildren(IDataContext dataContext, ICrossRefItemList crList) { var filters = new List<ColumnFilter>(); foreach (var fieldMapping in ChildMappings.Where(m => m.IsKey)) { ColumnFilter filter; if (!fieldMapping.TryCreateFilter(dataContext, out filter)) return; filters.Add(filter); } var itemIds = RuntimeDatabase.FindItems(ReferencedProcessName, filters); if (itemIds.Count > 0) { foreach (var id in itemIds) { UpdateChild(dataContext, id); if (!crList.Contains(id)) crList.Assign(id); } } else { var child = CreateChild(dataContext); if (!crList.Contains(child.Id)) crList.Assign(child.Id); } }