理解三层——IsExists

本文探讨了在新闻发布系统的类别验证中,如何合理地将判断类别名称是否存在的逻辑分配到DAL层与BLL层。通过具体实例展示了两种不同的实现方式及其背后的思考。

新闻发布系统听完,进入了编写过程中(手痒了好久了~~)。

DAL层编写过程中,类别表操作类,里面有一个方法,判断类别名称是否存在,也就是IsExists(string caName),在文本框中输入类别名称,单击按钮,在添加或修改类别之前,验证类别名称是否存在,存在则提示,不存在,直接添加或修改。

//判断类别名称是否已存在 public bool IsExists(string caName) { bool flag=false; string sql=”select * from category where [name]=’”+caName+”’”; DataTable dt= sqlHelper.ExecuteQuery(sql, commandtype.text); if (dt.rows.Count>0) { flag=true; } return flag; }

在这里,牛腩老师把IsExists写在了DAL层中,BLL层是DAL层操作类的封装,如下:

//判断类别名称是否已存在 public bool IsExists(string caName) { return cdao.IsExists(caName); }

犹记得,当时写机房收费系统的时候,我也遇到过此类问题,就是DAL层和BLL层划分职责的问题。

当时问王鹏师兄,他说平衡就好,可对于当时刚蹒跚而起,还不会走路的我,只能生硬的迈开脚步,平衡还是一个问题(=_=)

当时,我的想法是,DAL层都是和数据库打交道的最基本的增删改查操作,至于其他比较、判断之类,这些是在增删改查基础之上的操作,则放置BLL层,业务封装。如下:

''' <summary> ''' 验证用户名和密码 ''' </summary> ''' <param name="enUser">用户信息(用户名,密码)</param> ''' <returns>true正确,false错误</returns> ''' <remarks></remarks> Public Function IdentifyUser(ByVal enUser As Entity.enUser) As Boolean Implements IBLL.ILogin.IdentifyUser Dim flag As Boolean = False Dim dt As New DataTable Try dt = IUser.SelectByUserID(enUser.UserID) If (enUser.UserPWD.Equals(dt.Rows(0)("密码"))) Then GloNowUser.userID = dt.Rows(0)("用户名") GloNowUser.userLevel = dt.Rows(0)("用户级别") GloNowUser.userName = dt.Rows(0)("姓名") flag = True End If Return flag Catch ex As Exception Throw ex End Try End Function

那把这些操作也放置在DAL层呢?在牛腩老师这里,我看到了另一种思路,他把所有的操作类操作方法都放置在了DAL层中,BLL层则是简单的业务封装。

无关对错,更无好坏,平衡就好。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值