云中剑阁

虽然我现在还是一棵小小的树苗,但是不久的将来,我一定会成长成一棵参天大树
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

关于三层构架的思考

Posted on 2008-03-10 22:47  小恒  阅读(251)  评论(0编辑  收藏  举报
1. 使用三层构架要注重应用BLL层的类,而不是去阻止控件的事件发生,控件的事件是按一定的顺序发生的,你可以在顺序发生的事件中去设置你要的信息,但是要做到某个功能的实现应该关注的是BLL层的类.  一切的编程规则尽在BLL的类中实现.比如对GridView的编辑数据验证(查看数据库中是否已经存在我们要输入的数据),我开始的想法是按照ObjectDataSource的事件执行顺序去设置(在检索到数据库中已经存在要输入的数据时将GridView的数据源设置为空,原来是ObjectDataSource,这样一来就破会了数据的绑定,对GridView内部控件的绑定也会有影响,达到目的后还要重新设置回来),后来发现在BLL中重新创建一个方法来的更简单.

2.在做网站的过程中,发现三层模式要对每张表去做一个Adatper和DataTable,而且如果需要是不同表中进行操作的话很困难,这让我很迷惑,是否是我还没有找到合适的方法?

3.Scott的教程中,对更新,删除,检索数据都有明显的控制,体现在BLL层的类方法中,不是单纯的直接调用.值得学习.
 1 [System.ComponentModel.DataObjectMethodAttribute(System.ComponentModel.DataObjectMethodType.Insert, false)]
 2     public bool AddProductByStockNO(string BoardName, string LastModify, string StockNO, string BoardType)
 3     {
 4         using (bar.BoardDispDataTable BoardDisps1 = Adapter.GetBoardDispByStockNO(StockNO))
 5         {
 6             if (BoardDisps1.Count > 0)
 7             {
 8                 AllProperty.IsUpdated = false;
 9                 return false;                 
10             }

11         }

12         bar.BoardDispDataTable BoardDisps = new bar.BoardDispDataTable();
13         bar.BoardDispRow BoardDisp = BoardDisps.NewBoardDispRow();
14         BoardDisp.BoardName = BoardName;
15         BoardDisp.LastModify = DateTime.Now;
16         BoardDisp.StockNO = StockNO;
17         BoardDisp.BoardType = BoardType;
18         BoardDisps.AddBoardDispRow(BoardDisp);
19         int rowsAffected = Adapter.Update(BoardDisps);
20         AllProperty.IsUpdated = true;
21         return rowsAffected == 1;
22     }