【发布时间】:2013-05-08 17:41:32
【问题描述】:
好的,举个基本的例子,假设我有一个包含费用的应用程序,并且我的 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) 这将再次访问数据库以完成员工对象。这很方便,因为现在我可以通过费用访问员工成员/功能.. I.E.如果我绑定为 ObjectDataSource,我可以显示类似Eval("Employee.Name") 的内容并显示更友好的内容,然后只是一个数字,因为它存储在数据库中。
但是,如果我要获取每个对象的第一个费用详细信息,然后是员工详细信息,那么我正在处理的当前项目可能会运行 10 万行,并且数据库请求的数量将会猛增。 (实际上我当前的项目有一个包含 6-7 个外键的表)。
有什么方法可以让我的蛋糕也吃吗?
也许通过只有 Id 字段而不是完整的对象字段的接口类?但我觉得我从来没有完全理解过接口,所以我不确定这是否会有所作为。
感谢所有阅读本文的人,即使您没有任何答案。
【问题讨论】:
-
似乎使用 LazyLoading 的对象关系框架非常接近“两全其美”。