zoukankan      html  css  js  c++  java
  • Git.Framework 框架随手记--ORM编辑删除

      前面一篇文章<Git.Framework 框架随手记--ORM新增操作>主要讲解了如何使用Git.Framework往数据库中添加数据。其操作过程相对简单,本章主要记录如何编辑数据和修改数据。

      一. 编辑数据

        在Git.Framework中主要提供了如下编辑方法

    int Update(List<T> list);
    int Update(T entity);
    int Update(List<T> list, bool isOpenTrans);
    int Update(T entity, bool isOpenTrans);

        以上方法可以分为两组,区别在于两个输入参数的方法是可以启用事务操作的,在前面的文章中已经提到过。默认是不启用事务操作的。

    public int Update(AdminEntity entity)
    {
                entity.Include(a => new { a.Phone, a.Email, a.Mobile, a.RealName, a.RoleNum, a.DepartNum, a.UserName, a.PassWord, a.UpdateTime });
                entity.Where(a => a.UserCode == entity.UserCode);
                int line = this.Admin.Update(entity);
                return line;
    }

        结合昨天使用的实体映射类,数据访问接口,以及数据操作类,我们队Admin表进行数据修改操作。

    entity.Include(a => new { a.Phone, a.Email, a.Mobile, a.RealName, a.RoleNum, a.DepartNum, a.UserName, a.PassWord, a.UpdateTime });

        这段代码应该很熟悉,上一篇文章已经介绍到了这个用法,用于包含操作哪些字段,其中至少包含一个字段。但是这里要注意的是,如果Include中包含一个主键或者自动标识列是不会去真正包含的,其默认会将其他过滤掉,在实际的数据库操作过程中我们也不会去修改主键值。

        要想执行语句就要调用Update() 方法,该方法会向数据库发送命令操作。上一篇已经了解到数据库操作实际上最终是生成SQL语句执行的。上面一段代码生成的SQL语句如下:

    UPDATE [dbo].[Admin] SET [Phone]=@Phone,[Email]=@Email,[Mobile]=@Mobile,[RealName]=@RealName,[RoleNum]=@RoleNum,[DepartNum]=@DepartNum,[UserName]=@UserName,[PassWord]=@PassWord,[UpdateTime]=@UpdateTime  WHERE Admin.[UserCode]=@0_Admin_UserCode

        如果看到这种代码相信大家都比较熟悉了,一个带条件的SQL语句,其中都是使用占位符参数。在前面几篇也讲到了,这个框架的最底层其实还是ADO.NET,只是在表面封装了一层看不到而已,而且在ADO.NET底层封装还提供了相应的访问类,后面详述。

      二. 编辑多行数据

        在重载Update()方法的时候,我们看到有个参数List<T>,这个方法可以用于同时修改多行数据。

    List<UA_USERS> list = new List<UA_USERS>();
    UA_USERS user = new UA_USERS();
    user.PASSWORD = "777777777";
    user.Include(a => new { a.PASSWORD });
    user.USER_ID = "AA0";
    user.Where(a => a.USER_ID == user.USER_ID);
    list.Add(user);
    
    user = new UA_USERS();
    user.PASSWORD = "55555555555";
    user.USERNAME = "艾弗森";
    
    user.Include(a => new { a.PASSWORD,a.USERNAME });
    user.USER_ID = "AA1";
    user.Where(a => a.USER_ID == user.USER_ID);
    list.Add(user);
    
    int line = provider.Update(list,true);
    修改多行数据

        我们再集合中添加了三个实体对象,每个实体对象都有其相应的修改字段以及条件,在调用Update 方法的时候会生成3行SQL语句,然后同时发送命令执行。这里三条语句的执行不是循环打开3个连接,而是使用一个连接同时发送三行SQL,相当于批处理模式。

       三. 删除方法简介

    (1) int Delete(IEnumerable<int> ids);
    (2) int Delete(int id);
    (3) int Delete(object value);
    (4) int Delete(T entity);
    (5) int Delete(IEnumerable<int> ids, bool isOpenTrans);
    (6) int Delete(int id, bool isOpenTrans);
    (7) int Delete(object value, bool isOpenTrans);
    (8) int Delete(T entity, bool isOpenTrans);
    (9) int DeleteBatch(IEnumerable<T> list, bool isOpenTrans);

        在删除数据上提供了九个重载方法,但是在这九个方法中并不是每个方法都用的那么多。其中这九个方法可以分为三组: (1) 不用事务处理 (2) 使用事务处理 (3) 批量删除

        但是要注意的是这里的批量删除不是指删除多行数据,而是和上面的Update()方法一样,同时执行多个SQL语句.

        (1) int Delete(IEnumerable<int> ids); 根据主键自动标识列批量删除数据

        (2) int Delete(int id); 根据逐渐标识列删除数据

        (3) int Delete(object value);根据主键值删除数据

        (4) int Delete(T entity); 根据自定义条件删除数据,用的最多,比较灵活

        (9) int DeleteBatch(IEnumerable<T> list, bool isOpenTrans);批量删除数据,用的也比较多,自定义条件删除

    InStorDetailEntity detail = new InStorDetailEntity();
    detail.Where(a => a.OrderNum == entity.OrderNum);
    this.InStorDetail.Delete(detail);

        上面这段代码用于删除InStorDetail表中的数据,而且附带了条件,使用Where应该都明白和SQL中的Where是一样的作用

    detail.Where(a => a.OrderNum == entity.OrderNum);

        只是这里的Where是一个方法,并且使用到了Lambda表达式,我们可以简单的翻译为 字段OrderNum= 值; 这个在学习过Linq to SQL或者Entity Framework的应该都可以明白。如果最终要执行还是要调用Delete 方法的。

    DELETE FROM [dbo].[InStorDetail]  WHERE InStorDetail.[OrderNum]=@0_InStorDetail_OrderNum

        上面的代码生成如上SQL语句,如果.NET代码不能够理解其意思,对比SQL就应该明白了

  • 相关阅读:
    北风设计模式课程---13、享元模式
    北风设计模式课程---观察者模式2
    北风设计模式课程---观察者模式
    北风设计模式课程---12、观察者模式
    Linux下yum订购具体解释
    不黑诺基亚,他们觉得萌萌达
    System.Threading.ThreadStateException
    SRS微信号和QQ组
    hibernate它 10.many2many单向
    UML 简单的总结
  • 原文地址:https://www.cnblogs.com/qingyuan/p/3713033.html
Copyright © 2011-2022 走看看