解耦为 DAL 和 BLL - 我的担忧
Posted
技术标签:
【中文标题】解耦为 DAL 和 BLL - 我的担忧【英文标题】:Decoupling into DAL and BLL - my concerns 【发布时间】:2011-03-01 03:02:57 【问题描述】:在很多关于这个主题的帖子中,我遇到了非常简单的例子,这些例子并不能回答我的问题。
假设有一个文档表和用户表。在用 ADO.NET 编写的 DAL 中,我有一种方法可以根据某些标准重试所有文档。现在我的 UI 我有一个案例,我需要显示这个列表以及创建者的名字。
据我所知,我已经使用 DAL containsig JOIN 语句中的一种方法完成了它。 但是,每次我有一个如此复杂的方法,我必须对一些没有将 1:1 标记为 DB 的对象进行自定义映射。
应该放在另一层吗?如果是这样,那么我将不得不从连接查询中恢复,以通过结果进行迭代并查询每个文档作者。 . .这没有意义......(性能)
这种情况的最佳方法是什么?
【问题讨论】:
【参考方案1】:对于您的用户界面,我的建议是让 dto(那些 mvp/mvc 人员的视图模型)保存用户的数据和相应的文档列表。
自定义映射将始终存在,因此我建议您在此处查看 Automapper 以缓解这些映射问题。
【讨论】:
【参考方案2】:我过去在创建自己的自定义数据访问层时遇到了同样的事情。您希望您的对象一对一地映射到您的数据库,但很多时候您只需要编写一个自定义函数来检索内部连接数据。我不会将这些自定义操作放入它们自己的层中。
有时,我所做的是创建一个通用类,负责检索网格、组合框等的数据,这些数据连接了来自多个表的信息。此类将返回包含检索结果的自定义对象。如果您对为您执行自动自定义映射的工具不满意,我建议您创建自己的自动映射类构建器实用程序。
只要您将应用拆分为数据访问、业务和 UI 层,我认为您的方向是正确的。
【讨论】:
以上是关于解耦为 DAL 和 BLL - 我的担忧的主要内容,如果未能解决你的问题,请参考以下文章