2010-07-27 7 views
1

J'ai un problème sur mon site web où j'ai 2 objets en session, les deux objets sont structurés différemment et n'ont aucun lien les uns avec les autres (pas intentionnellement). Les deux objets ont cependant une collection de "Voyageurs". Ce que j'essaye de faire est de modifier une collection en ajoutant ou en supprimant "Voyageurs", quand un bouton de finition est cliqué, la collection modifiée sera alors enregistrée dans l'autre objet.Mise à jour 1object semble également mettre à jour un autre. VB.Net

Le problème est que, pour une raison quelconque, lorsque je modifie une collection dans un objet, les modifications sont également apportées à la collection dans l'autre objet.

Voici un exemple grossier:

Dim bookingContext As BookingContext = Session("BookingContext") 
Dim personSearchContext As PersonSearchContext = Session("PersonSearchContext") 
Dim personId As Integer = Request.Form("PersonID") 
Dim mode As String = Request.Form("Mode") 

Select Case mode 
    Case "Add" 
     For Each traveller As PersonProfile In personSearchContext.Travellers 
      If traveller.PersonID = personId Then 
       personSearchContext.SelectedTravellers.Add(traveller) 
       Exit For 
      End If 
     Next 
     context.Session("PersonSearchContext") = personSearchContext 
    Case "Remove" 
     For Each traveller As PersonProfile In personSearchContext.SelectedTravellers 
      If traveller.PersonID = personId Then 
       travellerSearchContext.SelectedTravellers.Remove(traveller) 
       Exit For 
      End If 
     Next 
     context.Session("PersonSearchContext") = personSearchContext 
    Case "Save" 
     bookingContext.Travellers = personSearchContext.SelectedTravellers 
     context.Session("BookingContext") = bookingContext     
End Select 

La question est la collection Les voyageurs dans l'objet « BookingContext » est mis à jour quand j'ajouter et supprimer de la collection dans les « PersonSearchContext ». C'est comme s'il y avait une sorte de lien ou de pointeur entre eux.

Des idées?

Cheers.

Répondre

1

Le problème est cette ligne dans votre code Economie:

bookingContext.Travellers = personSearchContext.SelectedTravellers 

Qu'est-ce que vous faites, il prend le référence à la collection SelectedTravellers dans l'objet personSearchContext et en attribuant la référence à la collection Les voyageurs dans le bookingContext objet. Cette affectation signifie que bookingContext.Travellers n'est plus une collection séparée de personSearchContext.SelectedTravellers. Ils sont maintenant tous deux des références au même objet en mémoire.

+0

Fantastique! Cela a du sens quand on y pense. Mon code ne fonctionne pas, Cheers mate. – DazzledKid

Questions connexes