从 DAL 返回数据对象

Posted

技术标签:

【中文标题】从 DAL 返回数据对象【英文标题】:Returning Data Objects from DAL 【发布时间】:2013-05-10 16:05:36 【问题描述】:

将数据对象从数据访问层返回到接口的最佳做法是什么?

目前,我有一个与数据库通信并将DataTable返回给业务层的层,然后业务层将业务对象实例化并返回到接口。这不是可悲或糟糕的做法吗?

我的问题是:

-的最佳方式是什么?

-如果 DAL 不应该返回数据对象,那么我如何将数据获取到 DataBinding 接口?

这不是问题,而是最佳实践问题。

提前谢谢大家

【问题讨论】:

【参考方案1】:

您看过存储库模式吗?

http://msdn.microsoft.com/en-us/library/ff649690.aspx

http://martinfowler.com/eaaCatalog/repository.html

【讨论】:

【参考方案2】:

我不确定 DAL 不应该返回数据对象 - 有很多个人偏好,这取决于应用程序规模等因素。在我构建的大多数(小型)应用程序中,我在 DAL 中使用了数据读取器,而不是填充和传递 DataTables。 DAL 使用数据读取器填充业务对象,然后将其作为集合返回给服务层。

在一个更复杂的场景中,表并不总是等同于业务对象,我使用数据读取器来填充 DTO(数据传输对象 - 非常简单的类,只包含表示表结构的变量,没有逻辑)作为集合返回到服务层。服务层从一种或多种类型的 DTO 构造业务对象。

我并不是说这是一个明确的答案(“最佳实践”问题的问题!),但希望我的经验可以提供一个见解(做什么或不做什么是值得商榷的!)。我很想看看其他人对此有何贡献。我想您可能会得到的一个答案是调查 ORM 的使用!

【讨论】:

以上是关于从 DAL 返回数据对象的主要内容,如果未能解决你的问题,请参考以下文章

从 DAL 返回 DTO 与 DataTable

如何使用 ADO.NET 从具有一对多关系的 DAL 层中的多个表中返回数据

业务层 (BLL) 数据访问层 (DAL) 和 UI 之间的通用结构?

我的 DAL 应该返回 Person 还是 Datatable?

DAL、会话、缓存架构

WCF 服务无法将大数组从 DAL 传送到 MVC