Представьте себе класс сотрудника:
public class Employee
{
public int ID { get; set; }
public string FirstName { get; set; }
public Employee(int ID, string FirstName)
{
this.ID = ID;
this.FirstName = FirstName;
}
}
Данные для сотрудника загружаются из уровня доступа к данным (DAL), который является другим отдельным классом.
Позже я решучто мне нужно другое свойство, а именно отдел для сотрудника, однако отдел сам по себе является огромной категорией, поскольку у него есть свои собственные свойства.Итак, я в итоге создаю для него класс:
class Department
{
public string DepartmentID { get; set;}
public string CostCenter { get; set; }
public bool hasManager { get; set; }
//more code
//constructor for department
}
Поэтому я изменяю свой класс сотрудников сверху, чтобы включить экземпляр отдела:
public class Employee {
//existing code for an employee above PLUS the below
public Department d { get; set; }
}
Так что теперь яХорошо, у меня есть класс сотрудников с отделом, связанным с ним.Когда я вызываю свой класс DAL, чтобы получить данные для своего сотрудника, это может вернуть фактический отдел в запросе SQL.Так что я могу легко присвоить DepartmentID
класса отдела.Но когда / как мне следует назначить все другие свойства класса Department.
Кроме того, все свойства CostCenter, hasManager и т. Д. Хранятся в слое базы данных.Если я первоначально только возвращаю DepartmentID, должен ли я позвонить в класс DAL, чтобы получить всю необходимую информацию для отдела?Если так, то где я должен это называть, я не думал, что вызов класса DAL от моего конструктора отдела был хорошей идеей.Я знаю, что могу просто создать связь между моими двумя таблицами и получить соответствующую информацию из отдела, а затем я могу создать свой отдел в конструкторе сотрудников.Но у класса сотрудника есть МНОЖЕСТВО свойств, уже много полей возвращаются из базы данных, поэтому, если я сделаю это, мой конструктор может становиться все больше и больше ....