В моем домене у сотрудника и отдела есть двунаправленные отношения «один ко многим»; чтобы позволить Child Employee синхронизировать это, у меня есть «внутреннее» поле доступа для набора (Iesi для NHibernate) сотрудников, которые находятся в отделе, которые в противном случае были бы общедоступными. Как так:шаблоны двунаправленных отношений с nhibernate
класс Факультет: класс
protected internal ISet<Employee> _staff;
public virtual ReadOnlyCollection<Employee> Staff {
get { return new List<Employee>(_staff).AsReadOnly(); }
}
public virtual void AddStaff(Employee emp) {
emp.Department = this; }
}
Сотрудник:
private Department _department;
public virtual Department Department {
set {
// check valid value, etc.
value._staff.Add(this);
}
}
Я сделал доступ в моем (FNH) отображение AsField (Prefix.Underscore), но так как я не может сделать поле Department._staff виртуальным NH недовольным. Наверное, я могу сделать поле виртуальным свойством и заставить его кормить, но похоже, что я делаю класс домена чрезмерно осведомленным о сохранении.
Я изучаю как NH и FNH, и я знаю, что нужен хороший букварь отображения отношений, но мой основной вопрос для этого поста есть логика в моих классах домена:
1) Является ли это хорошо с шаблоном # программирования для readonly установлен в biderectional отношения?
2) Каков наилучший способ сделать это более пригодным для использования в NHibernate?
Спасибо за обмен!
Berryl
Hi Jamie Прошу прощения за поздний кредит, так как это работает хорошо. Считаете ли вы, что можно было бы перевернуть логику и позволить внутреннему виду ISet? Как бы выглядело отображение? Еще раз спасибо за хороший ответ. – Berryl
Мне пришлось сделать внутреннюю сетку отдела сотрудников Employee защищенной внутренней, чтобы FluentNH принимал ее как действительный тип прокси, но после этого он работал нормально. – David