Опитвам се да картографирам модел на домейн в NHibernate. Моделът на домейна е реализиран с това, което според мен е DDD стил. Картографирането работи най-вече, но след това, когато се опитам да използвам филтър за колекция в колекция, получавам изключение, което казва: Колекцията не е реферирана.
Знам, че проблемът идва от това как съм внедрил колекцията. Моят въпрос: Възможно ли е да се използват филтри за колекции в nHibernate върху колекции, реализирани по този начин, или просто трябва да го забравя, т.е. nHibernate не може да работи с това.
Кодът е както следва:
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); }
}
}
Основният проблем е, че не искам да излагам колекцията от вътрешни адреси публично. Всяко друго нещо работи, използвам достъпа field.camelcase-underscore, така че nHibernate взаимодейства директно с полето. Работих върху книгата Hibernate in Action, а сега съм в глава 7, където се занимава с филтри за събиране.
Има ли начин да се заобиколи това. Накарах го да работи, като изложих вътрешната колекция по следния начин:
public ReadOnlyCollection<Address> Addresses
{
get { return _addresses; }
}
но наистина не искам да правя това.
Помощта наистина ще бъде оценена.
Джид