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