瘦BLL+胖DAL VS 胖BLL+瘦DAL(1)

简介

====================================================

以前做过一些winform的项目,那些项目也涉及到数据库,但是那些项目中表的作用只是把那些数据管理起来而已,

表与表之间的关联,或者说表与表之间一般不会有什么多表查询,为什么我会在这里说到多表查询呢,因为这个问题

就是我写这篇文章的原因,这里只是想起一个提出问题的作用,也希望大家帮忙帮忙。。。我做web还没有一个月,

就遇到一个问题,这个问题应该是很多人都有的,我这里集合我找到的一些资料和网上的讨论,仅仅想起到一个抛砖

引玉的作用。。

====================================================

 

问题

====================================================

任何做过web的程序员,一定知道三层构架,也就是什么界面层,业务逻辑层和数据访问层,界面层这里

就不做为今天的主题,我就来说一下业务逻辑层与数据访问层与处理多表查询之间的矛盾。

我这里引用别人的例子,我做了上点改动。

举例说明:
我有一个公司的管理系统,其中有两张表Department和Employee,现在公司有个需求说需要查看某一部门员工列表,

要求要有部门名称。我首先是建立两个实体类,DepartmentInfo和EmployeeInfo,其中EmployeeInfo中有一个

DepartmentName的属性。 然后我的做法是在DAL层中的Employee类中加一个方法

public List<EmployeeInfo> GetEmployeeList()
{

//string command="select e.*,d.departmentname from employee e,department d where e.departmentid=d.departmentid";

//或者调用存储过程

//.....访问数据库,填充EmployeeInfo
}
然后在BLL层中也写一个方法

public List<EmployeeInfo>  GetEmployeeList()
{

     DAL.GetEmployeeList();

     //......一些其它的处理

}
最终在UI层去调用BLL的方法去实现列表显示。

在上面的程序示例中,DAL层中不论是直接用SQL语句还是用存储过程,这样无形之中就将业务逻辑转嫁到了数据访问层,

数据访问层是干什么的,数据访问层应该仅仅是对数据库进行访问,他才不管你什么业务逻辑,这样不就乱了吗??如果表的连接

越多, 这种现象也就越明显。

好,为了不乱我就想一个办法,不就数据访问层吗,分层就分层,

BLL层:

public List<EmployeeInfo> GetEmployeeInfo()
{

//先得到员工,DAL.GetEmployee();

//再得到员工所在我部门名,DAL.GetDepartmentName();

//最后填充EmployeeInfo
}

DAL层:

public List<Employee> GetEmplyee()

{

     sql="select * from Emplyee";

     //操作emplyee表
}

public string GetEmplyee()

{

     sql="select DepartmentName from Department where DepartmentId=123";

     //操作Department表
}

这样就完全是按三层做的,并且这样的代码可以用代码生成工具生成,但是这样的代码在效率上就不成样子了,这样就有

了问题,怎么解决呢?用不用三层呢??

晚上,再写一些我的想法,先吃饭去。

 

posted @   connoryan  阅读(2694)  评论(34编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· [AI/GPT/综述] AI Agent的设计模式综述
点击右上角即可分享
微信分享提示