Я не знаю, как правильно сформулировать вопрос, поэтому заранее извините.
В частности, используя FluentNHibernate, как бы вы делали свои сущности для некоторых таблиц, на которые ссылается множество других таблиц?
Например, сущность Сотрудник. Сотрудники обычно используются почти везде, и для некоторых программ было бы целесообразно, чтобы их сотрудники содержали несколько ролей, несколько задач или несколько преимуществ. Прямо сейчас я представляю это так:
public class Employee
{
public virtual Employee()
{
Tasks = new List<Task>();
Roles = new List<Role>();
Benefits = new List<Benefit>();
}
public virtual Id { get; set; }
public virtual Name { get; set; }
public virtual IList<Task> Tasks { get; protected set; }
public virtual IList<Role> Roles { get; protected set; }
public virtual IList<Benefit> Benefits { get; protected set; }
public virtual void AddTask(Task task)
{
task.Employee = this;
Tasks.Add(task);
}
public virtual void AddBenefit(Benefit benefit)
{
benefit.Employee = this;
Benefits.Add(benefit);
}
public virtual void AddBenefit(Benefit benefit)
{
benefit.Employee = this;
Benefits.Add(benefit);
}
}
public class EmployeeMapper : ClassMap<Employee>
{
public EmployeeMapper()
{
id( x => x.Id );
Map( x => x.Name );
HasMany( x => x.Tasks );
HasMany( x => x.Roles );
HasMany( x => x.Benefits );
}
}
Теперь, когда в этом примере есть только 3 коллекции, есть вероятность, что она будет расти и расти с каждой ассоциацией, связанной с сотрудником. Как и в системе управления персоналом, она будет связана со всем, начиная с платежной ведомости, адресов, налогов, вычетов и т. Д. Не станет ли она слишком раздутой, если я сделаю сборник для каждой небольшой ссылки, которую я называю?
Существует ли шаблон, позволяющий избежать этого сценария, или NHibernate разработан так, чтобы мне приходилось ссылаться на каждый отдельный объект, который имеет ограничение внешнего ключа на моих объектах?