Correct way to remove arrays containing model objects in SwiftData

Are there any differences (either performance or memory considerations) between removing an array of model objects directly using .removeAll() vs using modelContext? Or, are they identical?

Attached below is an example to better illustrate the question (i.e., First Way vs Second Way)


// Model Definition
@Model
class GroupOfPeople {
   let groupName: String
   
   @Relationship(deleteRule: .cascade, inverse: \Person.group)
   var people: [Person] = []
   
   init() { ... }
}

@Model
class Person {
   let name: String
   var group: GroupOfPeople?
   
   init() { ... }
}

// First way
struct DemoView: View {

@Query private groups: [GroupOfPeople]

   var body: some View {
      List(groups) { group in
         DetailView(group: group)
      }
   }
}

struct DetailView: View {

   let group: GroupOfPeople
   var body: some View {
      Button("Delete All Participants") {
         group.people.removeAll()
      }
   }



// Second way
struct DemoView: View {

@Query private groups: [GroupOfPeople]

   var body: some View {
      List(groups) { group in
         DetailView(group: group)
      }
   }
}

struct DetailView: View {

   @Environment(\.modelContext) private var context

   let group: GroupOfPeople
   var body: some View {
      Button("Delete All Participants") {
         context.delete(model: Person.self, where: #Predicate { $0.group.name == group.name })
      } // assuming group names are unique. more of making a point using modelContext instead
   }

Correct way to remove arrays containing model objects in SwiftData
 
 
Q