从 DAL 返回 DTO 与 DataTable

Posted

技术标签:

【中文标题】从 DAL 返回 DTO 与 DataTable【英文标题】:Returning a DTO vs DataTable from the DAL 【发布时间】:2011-02-07 15:48:07 【问题描述】:

让 DAL 从域模型返回 DTO 类型与仅返回 DataTable 是否可以?让 DAL 函数返回 DataTables/DataSets 并让 BLL 将数据映射到业务对象不是更宽松吗?

【问题讨论】:

【参考方案1】:

我认为这真的取决于个人喜好,但我喜欢尽可能避免使用 DataTables。

它们有时很方便,但它们不是强类型的事实往往会使调试、测试和仅仅理解代码变得更加困难。

【讨论】:

【参考方案2】:

对于小型应用程序,在 .NET 中,最好将您的架构基于 DataSet 和 DataTables。您对 UI 和报告具有直接绑定支持,并且它可以很好地扩展,直到您遇到一些更大的域问题。查看 Fowler 的企业应用架构模式一书,尤其是表模块和表数据网关模式。

对于任何更复杂的事情,拥有良好的域模型和围绕它的适当层(ORM 映射器、远程处理和服务层等)总是值得的。对于这些模式,请查看前面提到的书,最好是 Eric Evans 的 Domain Driven Design

【讨论】:

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

如何在 UI、BLL、DAL 之间使用 DTO

DTO 类与结构

从 DAL 返回数据对象

C# 数据层和 Dto

使用 LINQ 作为 DAL 时如何传输数据?

DTO 形状:扁平、复杂/嵌套或两者的混合