2 Stimmen

Verwendung von NHibernate-Sammlungsfiltern mit DDD-Sammlungen

Ich versuche, ein Domänenmodell in NHibernate abzubilden. Das Domänenmodell ist im DDD-Stil implementiert, wie ich glaube. Das Mapping funktioniert größtenteils, aber wenn ich versuche, einen Sammlungsfilter auf eine Sammlung anzuwenden, erhalte ich eine Ausnahme, die besagt: The collection was unreferenced.

Ich weiß, dass das Problem daher kommt, wie ich die Sammlung implementiert habe. Meine Frage: Ist es möglich, Sammlungsfilter in nHibernate auf Sammlungen zu verwenden, die auf diese Weise implementiert wurden, oder sollte ich es einfach vergessen, d. h. nHibernate kann damit nicht arbeiten.

Der Code lautet wie folgt:

Person
{
   IList<Address> _addresses = new List<Address>();
   public string FirstName {get; set;}
   ...
   public void addAddress(Address address)
   {
      // ... do some checks or validation
      _addresses.Add(address);
   }

   public void removeAddress(Address address) {...}

   public ReadOnlyCollection<Address> Addresses 
   { 
      get { return new ReadOnlyCollection<Address>(_addresses); }
   }
}

Das Hauptproblem ist, dass ich die interne Adressensammlung nicht öffentlich zugänglich machen möchte. Alles andere funktioniert, ich verwende den field.camelcase-underscore-Zugriff, damit nHibernate direkt mit dem Feld interagiert. Ich habe mich durch das Buch "Hibernate in Action" gearbeitet und bin jetzt in Kapitel 7, wo es um Sammlungsfilter geht.

Gibt es eine Möglichkeit, dies zu umgehen? Ich habe es zu arbeiten, indem Sie die interne Sammlung wie folgt aussetzen:

public ReadOnlyCollection<Address> Addresses 
{ 
   get { return _addresses; }
}

aber ich möchte das wirklich nicht tun.

Für Hilfe wären wir sehr dankbar.

Jide

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X