C# 对象取决于另一个对象-何时加载其属性
想象一类员工:C# 对象取决于另一个对象-何时加载其属性,c#,sql-server,oop,C#,Sql Server,Oop,想象一类员工: 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)加
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)加载的,DAL是另一个独立的类
后来我决定我需要另一个属性,即员工的部门,但是部门本身是一个巨大的类别,因为它有自己的属性。因此,我最终为它制作了一个课程:
class Department
{
public string DepartmentID { get; set;}
public string CostCenter { get; set; }
public bool hasManager { get; set; }
//more code
//constructor for department
}
因此,我从上面更改了employee类,以包含一个部门的实例:
public class Employee {
//existing code for an employee above PLUS the below
public Department d { get; set; }
}
现在我很好,我有一个employee类,它有一个与之相关的部门。当我调用DAL类为我的员工获取数据时,这可以在SQL查询中返回实际的部门。因此,我可以轻松分配班级部门的部门ID
。但是何时/如何分配Department类的所有其他属性
此外,CostCenter、hasManager等的属性都存储在数据库层中。如果我最初只收到部门ID,我是否应该再次致电DAL班级以获取该部门的所有相关信息?如果是这样的话,我应该在哪里调用它呢?我不认为从我的部门构造函数调用DAL类是个好主意。我知道我可以在两个表之间创建一个关系,从部门获取相关信息,然后在employee构造函数中实例化我的部门。但是employee类有很多属性,已经有很多字段从数据库返回,因此如果我这样做,我的构造函数可能会越来越大……好吧,您可以选择 我假设您有自己的DAL beacuse EF和Linq2Sql,并为此提供了内置选项
if(p.d==null).
d
属性的getter中执行按需加载李>
我想我明白你的意思了,我会进一步调查的。