在模型视图展示器(MVP
)模式中,我们的DAL
总是应该返回商业模型。但是,如果我想从数据库中获取一个数字,例如最后一个ClientID
(最新的客户端ID)是一个字符串,那么我的DAL
方法应该返回{{1} }对象有大约10个其他字段,如ClientInfo
,ClientName
等。
如果我想从我的Address
获取业务对象列表,是否可以按以下方式执行,或者更好地从DAL
获取DataTable
然后在应用DAL
中,将其转换为BLL
?
List
答案 0 :(得分:1)
这是一个基于意见的问题,但生病并继续回答,因为我认为这很重要。
如果您对数据库进行多次访问只是为了查询ClientID
,那么IMO不会分配整个ClientInfo
对象是有效的,因为它是多余的,并且不需要当你只需要int/string
时,整个额外的分配。虽然如果您确实看到自己开始添加超过1个属性(假设您需要获得ClientID
和Address
),那么您应该将返回值转换为ClientInfo
。这实际上取决于情景。
再次,这是MO。我会让我的数据库返回DataTable
,因为我不希望我的Data Access Layer
与我的Data Object Model
有任何关系。如果有一天我想改变它,我不希望它成为一个跨领域的问题,并重构该计划的每个部分。相反,我会让一个中级班负责将DataTable
转换为我的DOM
。这样,只有一个地方必须知道已经进行了更改,我只需要在我的代码中重构一个地方。我强烈建议将AutoMapper作为您应用程序的中间层。