首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

多层应用中的有关问题,希望各位老师解答

2012-02-21 
多层应用中的问题,希望各位老师解答首先我在数据访问层DataAccess创建方法:publicvoidAddPersonnel(BasePe

多层应用中的问题,希望各位老师解答
首先我在数据访问层DataAccess创建方法:
public   void   AddPersonnel(BasePersonnel   bp)
                {
                        using   (SqlConnection   cnn   =   GetConn())
                        {
                                cnn.Open();
                                using   (SqlCommand   FCommand   =   cnn.CreateCommand())
                                {
                                        FCommand.CommandText   =   "AddPersonnel ";
                                        FCommand.CommandType   =   CommandType.StoredProcedure;
                                        FCommand.Parameters.Add( "@PersonnelName ",   SqlDbType.Char).Value   =   bp.PersonnelName;
                                        FCommand.Parameters.Add( "@PersonnelSex ",   SqlDbType.Char).Value   =   bp.PersonnelSex   ??   string.Empty;
                                        FCommand.Parameters.Add( "@PersonnelCard ",   SqlDbType.Char).Value   =   bp.PersonnelCard   ??   string.Empty;
                                        FCommand.Parameters.Add( "@PersonnelPhone ",   SqlDbType.Char).Value   =   bp.PersonnelPhone   ??   string.Empty;
                                        FCommand.Parameters.Add( "@PersonnelEmail ",   SqlDbType.Char).Value   =   bp.PersonnelEmail   ??   string.Empty;
                                        FCommand.ExecuteNonQuery();
                                }
                        }
                }
接着在规则定义层:
public     void   AddPersonnel(BasePersonnel   bp)
                {
                        if   (bp.PersonnelName   ==   string.Empty   ||   bp.PersonnelName   ==   null)
                        {
                                return   null;


                        }
                        using   (PersonnelLayer   layer   =   new   PersonnelLayer())
                        {
                                return   layer.AddPersonnel(bp);
                        }
                }
这样是会出错的,因为我在数据访问层的方法返回的是一个void,而在规则层里,用了return,所以我想请教的是应该怎么改能不出错,如果把方法的返回值改成bool型,代码要怎么改,或是别的方法也行

[解决办法]
两种方式:
一、返回bool或者数值来代表操作是否成功或者操作后的状态
二、数据访问层和业务层都没有返回值,不符合正常规则时,就抛出异常。

个人比较倾向于第二种,但这种方式要求有比较完整的异常处理机制。
[解决办法]
你这种程序在我看来等于一层,或者说是“高度耦合”的,根本没有分层的思想。
[解决办法]
至于你说的问题,其实不是问题。既然定义为“public void AddPersonnel(BasePersonnel bp)”,当然就就不应该写return。往往,初学者不是想的太少,而是想的太多,总是把事情想得太随意。其实你应该按照简单的语法去做,好比设计你的“PersonnelLayer”层的人是第一个你,设计你的“规则定义层”的是第二个你,这两个你要么第一个尊重第二个的接口,要么第二个尊重第一个接口,然后再各自尽量优化结构。其实怎样都需要一定程度地妥协,不能没完没了地互相乱扯皮。
[解决办法]
顶!

热点排行