从 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 返回数据对象的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 ADO.NET 从具有一对多关系的 DAL 层中的多个表中返回数据
业务层 (BLL) 数据访问层 (DAL) 和 UI 之间的通用结构?