好的,举个基本的例子,假设我有一个包含费用的应用程序,并且我的 SQL 数据库中的每项费用都有一个 ID、员工 ID 和金额。我应该这样做:
public class Expense
{
public int Id { get; set; }
public Employee Employee { get; set; }
public decimal Amount { get; set; }
}
或这个:
public class Expense
{
public int Id { get; set; }
public int EmployeeId { get; set; }
public decimal Amount { get; set; }
}
你看我通常会做第一个,当我从数据库中获取费用时,我会通过调用构造函数来设置 Employee 字段,例如:Employee = new Employee(int id)
这将再次访问数据库以完成 Employee 对象中的成员。这很方便,因为现在我可以通过费用访问员工成员/功能。如果我绑定为 ObjectDataSource,我可以显示类似的Eval("Employee.Name")
内容并显示更友好的内容,然后只是一个数字,因为它存储在数据库中。
但是,我正在处理的当前项目可能会运行数十万行,如果我要获取每个对象的第一笔费用详细信息,然后是员工详细信息,那么数据库请求的数量将会飙升。(实际上我当前的项目有一个带有 6-7 个外键的表)。
有什么方法可以让我的蛋糕也吃吗?
也许通过仅具有 Id 字段而不是完整对象字段的接口类?但我觉得我从来没有完全理解过接口,所以我不确定这是否会有所作为。
感谢任何读过这篇文章的人,即使你对我没有任何答案。