关于 Repository 在BIZ层的应用

利用Repository模式统一业务层接口,对UI层进行统一调用。下面是我的一个构想

1.Repository代码

        public   interface   BaseBizObject < TModel >
        {
                List < TModel >   GetObjects ( NameValueCollection   collection ) ;
                TModel   GetObject ( object   id ) ;
                void   Add ( TModel   model ) ;
                void   Update ( TModel   model ) ;
                void   LogicDelete ( object   id ) ;
                void   Delete ( Expression < Func < TModel,   bool > >   predicate ) ;
        }

2.继承类代码 ,对接口的实现。了解的话可以忽略这段代码,重点是在UI层的应用

        public   class   BaseBizObjectImpl < TModel >   :   BaseBizObject < TModel >   where   TModel   :   class
        {
                public   virtual   List < TModel >   GetObjects ( NameValueCollection   collection )
                {
                        throw   new   System . NotImplementedException ( ) ;
                }

                public   TModel   GetObject ( object   id )
                {
10                         return   DaoAccess . Instance < TModel > ( ) . GetById ( Int32 . Parse ( id . ToString ( ) ) ) ;
11                 }
12
13                 public   void   Add ( TModel   model )
14                 {
15                         DaoAccess . Instance < TModel > ( ) . Add ( model ) ;
16                 }
17
18                 public   void   Update ( TModel   model )
19                 {
20                         DaoAccess . Instance < TModel > ( ) . SubmitChanges ( ) ;
21                 }
22
23                 public   void   LogicDelete ( object   id )
24                 {
25                         DaoAccess . Instance < TModel > ( ) . SubmitChanges ( ) ;
26                 }
27
28                 public   void   Delete ( Expression < Func < TModel,   bool > >   predicate )
29                 {
30                         DaoAccess . Instance < TModel > ( ) . Delete ( predicate ) ;
31                 }
32         }
 
   Catalog 继承自 BaseBizObjectImpl

 

1         public   class   CatalogMgr   :   BaseBizObjectImpl < Catalog >
2         {
3                 public   override   List < Catalog >   GetObjects ( NameValueCollection   collection )
4                 {
5                         //   collection   存放动态查询字段
6                         return   DaoAccess . Instance < Catalog > ( ) . GetAll ( ) . ToList ( ) ;
7                 }
8         }
 

 

3.UI层编辑页面的基类 

public   abstract   class   BaseEditPage < TBiz,   TEntity >   :   System . Web . UI . Page   where   TBiz   :   BaseBizObject < TEntity > ,   new ( )
{
        public   BaseEditPage ( )
        {
                //
                // TODO:   在此处添加构造函数逻辑
                //
        }

10         protected     bool   IsNew   {   get ;   set ;   }
11
12         protected   abstract   void   PageInit ( ) ;
13
14         protected   abstract   TEntity   UpdateModel ( ) ;
15
16         protected   abstract   void   UpdateForm ( TEntity   entity ) ;
17
18         protected   override   void   OnLoad ( System . EventArgs   e )
19         {
20                 base . OnLoad ( e ) ;
21                 if   ( ! IsPostBack )
22                 {
23                         PageInit ( ) ;
24                         object   id   =   Request . QueryString [ " pkid " ] ;
25                         if   ( id   = =   null )
26                         {
27                                 IsNew   =   true ;
28                         }
29                         else
30                         {
31                                 TBiz   obj   =   new   TBiz ( ) ;
32                                 TEntity   entity   =   obj . GetObject ( id ) ;
33                                 UpdateForm ( entity ) ;
34                         }
35                 }
36         }

4.Catalog编辑页面

public   partial   class   Admin_Catalog_EditCatalog   :   BaseEditPage < CatalogMgr,Catalog >
{
        protected   void   Page_Load ( object   sender,   EventArgs   e )
        {

        }

        protected   override   void   PageInit ( )
        {
10                 IsNew   =   false ;
11         }
12
13         protected   override   Catalog   UpdateModel ( )
14         {
15                 return   ReflectForm < Catalog > . UpdateModel ( Request . Form ) ;
16         }
17
18         protected   override   void   UpdateForm ( Catalog   entity )
19         {
20                 ReflectForm < Catalog > . UpdateForm ( this . form1,entity ) ;
21         }
22
23         protected   void   btnSave_Click ( object   sender,   EventArgs   e )
24         {
25                 if   ( ! IsNew )
26                 {
27                         new   CatalogMgr ( ) . Update ( UpdateModel ( ) ) ;
28                 }
29                 else
30                 {
31                         new   CatalogMgr ( ) . Add ( UpdateModel ( ) ) ;
32                 }
33         }
34         protected   void   btnCancel_Click ( object   sender,   EventArgs   e )
35         {
36                 Response . Redirect ( " ListCatalog.aspx " ) ;
37         }
38         protected   void   btnDel_Click ( object   sender,   EventArgs   e )
39         {
40         }
41 }
42

 

 

如此如此这般这般,编辑页面的代码少了很多。列表页面同理可得。可能会碰到一个页面会编辑多个MODEL,这里提供一个思路。

转载于:https://www.cnblogs.com/yuanhuaming/archive/2009/11/05/1596503.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值