DataRabbit 轻量的数据访问框架(03) -- IOrmAccesser(续)

本文将接着 DataRabbit 轻量的数据访问框架 -- IOrmAccesser  继续介绍IOrmAccesser的一些高级功能。这些高级功能需要DataRabbit.ORM.ISmartEntity接口的支持。注意,对于Entity class 来说,该接口并不是强制的。
   如果Entity class 继承了ISmartEntity接口,那么这个Entity就是一个“Smart”的Entity,IOrmAccesser针对这样的Entity,它将拥有两种特殊的能力:
(1)partial update:即部分更新的功能。即在Update一个SmartEntity对象时,只更新哪些标记为“dirty”的字段。
   比如,我们以前这样来实现“将ID为30的学生的Email更新”的功能:
            // 将ID为30的学生的Email更新
            Student student  =  stuOrmAccesser.GetOne( new  Filter(Student._ID,  30 ));        
            student.Email 
=   " sky@299.com " ;
            stuOrmAccesser.Update(student);//更新除主键外的所有字段

   但是,如果Student Entity实现了ISmartEntity接口,就可以这么做:
            // 将ID为30的学生的Email更新
            Student student  =  new Student() ;
            student.ID = 30 ;
            student.Email 
=   " sky@299.com " ;
            stuOrmAccesser.Update(student);//仅仅更新“Email”字段

   由于指讲“Email”字段标记为“dirty”,所以在Update时,仅仅会更新“Email”字段的值。

(2)插入前检查:即在向数据库中插入一个SmartEntity对象之前,先检查该对象的状态是否正确,如果不正确,将不会插入,而是抛出InvalidEntityException异常。

   ISmartEntity接口定义与说明如下:
    public   interface  ISmartEntity
    {
        
///   <summary>
        
///  Clean 将所有Column字段的dirty标记设为false。
        
///   </summary>
         void  Clean();

        
///   <summary>
        
///  DirtyColumnList 获取所有需要更新的Column
        
///   </summary>
        IList < string >  DirtyColumnList {  get ; }

        
///   <summary>
        
///  Check 用于检查Entity内部状态是否一致。
        
///  在将ISmartEntity插入(或更新)到数据库之前,DataRabbit会检查(Check)其状态是否有效,如果无效,则将抛出InvalidEntityException。
        
///   </summary>       
         bool  Check(DataAccessType dataAccessType);
    }

    
///   <summary>
    
///  DataAccessType 访问数据库的几种操作类型
    
///   </summary>
     public   enum  DataAccessType
    {
        Query, Insert, Update, Delete
    }
   
   普通的Entity class可以通过工具自动生成,smart Entity class也可以通过工具自动生成,我写了一个简单的小工具“ EntityCreator”来生成Entity class或smart Entity class。生成的Entity class代码中,Check()方法直接返回true,我们可以在这个方法内添加代码以检查当前Entity对象的状态,确保在插入该对象之前,对象的状态是一致、正确的。
   下面是针对前述的Student生成的smart Entity 代码:
Student


 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值