DAL是否应始终返回MVP中的业务对象

时间:2014-06-02 09:04:55

标签: c# .net oop ado.net mvp

  1. 在模型视图展示器(MVP)模式中,我们的DAL总是应该返回商业模型。但是,如果我想从数据库中获取一个数字,例如最后一个ClientID(最新的客户端ID)是一个字符串,那么我的DAL方法应该返回{{1} }对象有大约10个其他字段,如ClientInfoClientName等。

  2. 如果我想从我的Address获取业务对象列表,是否可以按以下方式执行,或者更好地从DAL获取DataTable然后在应用DAL中,将其转换为BLL

    List

1 个答案:

答案 0 :(得分:1)

这是一个基于意见的问题,但生病并继续回答,因为我认为这很重要。

  1. 如果您对数据库进行多次访问只是为了查询ClientID,那么IMO不会分配整个ClientInfo对象是有效的,因为它是多余的,并且不需要当你只需要int/string时,整个额外的分配。虽然如果您确实看到自己开始添加超过1个属性(假设您需要获得ClientIDAddress),那么您应该将返回值转换为ClientInfo。这实际上取决于情景。

  2. 再次,这是MO。我会让我的数据库返回DataTable,因为我不希望我的Data Access Layer与我的Data Object Model有任何关系。如果有一天我想改变它,我不希望它成为一个跨领域的问题,并重构该计划的每个部分。相反,我会让一个中级班负责将DataTable转换为我的DOM。这样,只有一个地方必须知道已经进行了更改,我只需要在我的代码中重构一个地方。我强烈建议将AutoMapper作为您应用程序的中间层。