如何从数据存储中有效加载对象模型?

时间:2013-05-16 10:59:42

标签: c# oop

考虑一下,Order类的示例是否具有OrderLines的集合属性。

public class Order
{
    public OrderLineCollection OrderLines { get; private set; }
}

现在考虑一个数据访问层,它返回Order个对象的集合,而不填充OrderLines属性(空集合)。

为了最小化到服务器的往返,系统将所有Order对象的id传递给DAL,DAL一次返回每个Order的OrderLine个对象。业务规则层中的代码负责将正确的OrderLine对象添加到正确的Order对象。

public class OrderDAL
{
    public IEnumerable<Order> GetOrdersByCustomer(int customerId)
    {
        ...
    }

    public IEnumerable<OrderLine> GetOrderLines(IEnumerable<int> orderIds)
    {
        ...
    }
}

这是做这种事情的一般方式(减少数据库往返)吗?

DAL是否有责任返回完全填充的Order个对象?

有更好的方法吗?

不,我不能在这个特定的实例中使用ORM工具!

1 个答案:

答案 0 :(得分:1)

我一个人没有。我不想在初始查询后返回商店以检索更多数据。在加载数据时,您(应该)知道您正在加载它的环境,因此您将事先了解您想要制作的“导航属性”或连接。这种方式使用一个查询,您可以获得所需的所有数据。

然而,这是从无国籍的角度来看,因为我目前正专注于MVC和实体框架。我想如果您正在创建一个会计程序,您可能会有一个显示订单标题的订单屏幕,以及一个您想要显示所选订单详细信息的订单详细信息屏幕。因此,在这种情况下,是的,只需检索所选订单的OrderLines就很有用。

像往常一样,答案是:它取决于。

  

不,我不能在这个特定的实例中使用ORM工具!

为什么?