应用实体类EntitySet实现类似的范型功能

在制做项目时我们都会将数据库中的字段名写成一个类,也就是将数据库中的每一张表写成一个类,我们将它称为实体类.EntitySet类能构将类的很多个实例对象封装在Entities属性中,同时可以记录查询记录的总数,对数据库分页很有用;拥有类是List<>范型功能,应用于所有实体类,能减少我们很多代码.

      通常我们要为一个实体类定义四个重要的函数,当然这是最少的要求:(假设我们有一个实体类EntitySimple) 下面我们就定义四个和数据库相关联的函数:
     
 1 None.gif using  System;
 2 None.gif using  System.Data;
 3 None.gif using  System.Data.SqlClient;
 4 None.gif // 其中EntitySimple类位于下面的命名空间中.
 5 None.gif using  NexPlus.Entities;
 6 None.gif
 7 ExpandedBlockStart.gif namespace  NexPlus.Data.SqlDataProvider {
 8ExpandedSubBlockStart.gif  public class SimpleDataProvider{
 9InBlock.gif    
10ExpandedSubBlockStart.gif   public SimpleDataProvider(){}
11InBlock.gif
12ExpandedSubBlockStart.gif   public bool CreateUpdateEntitySimple(EntitySimple entitySimple,DataAction action){
13InBlock.gif    //代码dot.gif.
14ExpandedSubBlockEnd.gif   }
15InBlock.gif
16ExpandedSubBlockStart.gif   public EntitySimple GetEntitySimple(int id){
17InBlock.gif    //代码dot.gif.
18ExpandedSubBlockEnd.gif   }
19InBlock.gif
20ExpandedSubBlockStart.gif   public bool DeleteEntitySimple(int id){
21InBlock.gif    //代码dot.gif.
22ExpandedSubBlockEnd.gif   }
23InBlock.gif
24ExpandedSubBlockStart.gif   public EntitySet GetAllEntitySimple(){
25InBlock.gif    //代码dot.gif.
26ExpandedSubBlockEnd.gif   } 
27ExpandedSubBlockEnd.gif  }
28ExpandedBlockEnd.gif}
       从上面可以很容易看到就是SQL的四大守护神:SELECT,UPDATE,DELETE,INSERT;一般创建和更新就差一个Id,都是用实体类封装实例,所以我们把他们写作同一个函数里,用枚举( DataAction action)来区分创建还是更新.今天我们要讨论的就是 EntitySet类,我们来看一下它的代码:
 1 None.gif using  System;
 2 None.gif using  System.Collections;
 3 None.gif
 4 None.gif namespace  NexPlus.Entities
 5 ExpandedBlockStart.gif {
 6InBlock.gif    public class EntitySet
 7ExpandedSubBlockStart.gif    {
 8InBlock.gif        ArrayList entities = new ArrayList();
 9InBlock.gif        int totalRecords = 0;
10ExpandedSubBlockStart.gif        /// <summary>
11InBlock.gif        /// 实体总纪录数。
12ExpandedSubBlockEnd.gif        /// </summary>
13ExpandedSubBlockStart.gif        public int TotalRecords{
14ExpandedSubBlockStart.gif            get{return totalRecords;}
15ExpandedSubBlockStart.gif            set{totalRecords = value;}
16ExpandedSubBlockEnd.gif        }
17ExpandedSubBlockStart.gif        /// <summary>
18InBlock.gif        /// 实体项列表。
19ExpandedSubBlockEnd.gif        /// </summary>
20ExpandedSubBlockStart.gif        public ArrayList Entities{
21ExpandedSubBlockStart.gif            get{return entities;}
22ExpandedSubBlockEnd.gif        }
23ExpandedSubBlockStart.gif        /// <summary>
24InBlock.gif        /// 实体中是否有项。
25ExpandedSubBlockEnd.gif        /// </summary>
26ExpandedSubBlockStart.gif        public bool HasResults{
27ExpandedSubBlockStart.gif            get{
28InBlock.gif                if (entities.Count > 0)
29InBlock.gif                    return true;
30InBlock.gif                return false;
31ExpandedSubBlockEnd.gif            }
32ExpandedSubBlockEnd.gif        }
33ExpandedSubBlockEnd.gif    }
34ExpandedBlockEnd.gif}

      EntitySet其实就是一个ArrayList的变形版,有了这个类在读取是就可以将对象entitySimple给Add进去了,当我们要用的时候就可以直接调用了:EntitySet set=SimpleManager.GetAllEntitySimple().Entities;如果直接使用SimpleManager.GetAllEntitySimple().Entities前显式转化:(EntitySimple)SimpleManager.GetAllEntitySimple().Entities.

    代码很简单,但能构充当十分重要的角色,对于一个网站来说需要很多个实体类集合,这里我们就可以用这个类来替代集合类.能构减少很多代码,当然你可以用List<EntitySimple>,但是有时需要TotalRecords,就不能直接从中读取,像上一篇文章中就不需要加out int totalRecords了,可以直接存在这个类里,我觉得这个类会比较好用,所以就拿出来和大家分享一下,或许你有更好的,希望批评指正!


本文转自网魂小兵博客园博客,原文链接:http://www.cnblogs.com/xdotnet/archive/2006/09/20/EntitySet_Class_So_Good.html,如需转载请自行联系原作者

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值