想象一下一类员工:
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类是个好主意。我知道我可以在我的两个表之间建立关系并从部门获取相关信息,然后我可以在员工构造函数中实例化我的部门。但是员工类有很多属性已经有很多字段从数据库返回,所以如果我这样做,我的构造函数可能会变得越来越大......
答案 0 :(得分:1)
嗯,你有选择......
我假设您有自己的DAL,因为EF和Linq2Sql都有内置的选项。
if (p.d == null) ...
d
属性的getter内进行按需。