public void ImportEntities(IEnumerable <MappedEntity> mappedEntities) { int count = 0; foreach (MappedEntity mappedEntity in mappedEntities) { bool newEntity = false; Entity entity = _entityRepository .GetEntityByUniqueValue( mappedEntity.UniqueFieldType, mappedEntity.UniqueFieldValue, LoadLevel.DataOnly); if (entity == null) { EntityType entityType = _modelsRepository .GetEntityType(mappedEntity.EntityType); entity = Entity.CreateEntity(entityType); newEntity = true; } bool entityModified = false; foreach (MappedField mappedField in mappedEntity.Fields) { // This extension method is much more efficient than the built-in GetField() method. Field field = entity.GetFieldOrdinal(mappedField.Name); if (field == null) { throw new InvalidOperationException( $"The field '{mappedField.Name}' does not exist in the model."); } object fieldValue = mappedField.Value; field.Data = fieldValue; entityModified = true; } if (entity.FieldSetId != mappedEntity.FieldSet) { entity.FieldSetId = mappedEntity.FieldSet; entityModified = true; } if (entity.Id == 0) { entity = _entityRepository.AddEntity(entity); } else if (entityModified) { entity = _entityRepository.UpdateEntity(entity); } foreach (MappedLink mappedLink in mappedEntity.Links) { ImportLink(mappedLink, entity, newEntity); } count++; } _context.Log(LogLevel.Information, $"Finished importing {count} entities."); }