• FreeSql学习笔记——5.删除


    前言

      对于FreeSql来说,删除的支持并不强大,只有在Where条件不为空的时候才执行,否则返回0或默认值,不执行删除操作;
     
     

    语法

      fsql.Delete<Class>(object dywhere)
     
     
     条件参数支持:
      • 主键
      • 主键数组
      • 对象
      • 对象数组
      • 指定字段值
     

    主键删除

     将主键作为sql的条件删除记录
    _freeSql.Delete<Student>(15);
    //DELETE FROM [Student] WHERE ([Id] = 15)
    
    _freeSql.Delete<Student>(new[] { 13, 14 });
    //DELETE FROM [Student] WHERE ([Id] IN (13,14))
     
     

    对象删除

      跟想象的不一样,使用对象的删除也是用的主键拼接删除条件
    _freeSql.Delete<Student>(new Student { Id = 13, Name = "xx" });
    //DELETE FROM [Student] WHERE ([Id] = 13)
    _freeSql.Delete<Student>(new List<Student> { new Student { Id = 13, Name = "xx" }, new Student { Id = 14, Name = "xx" } });
    //DELETE FROM [Student] WHERE ([Id] IN (13,14))
     

    条件删除

      条件删除就是用指定字段拼接条件,也是用的比较频繁的
    _freeSql.Delete<Student>(new { Name = "小明9" });
    //DELETE FROM [Student] WHERE ([Name] = N'小明9')
     
     

    字典删除

      既然新增支持字典,删除也支持,看下使用字典删除sql是什么样的
       
    DELETE FROM [Student] WHERE ([Id] = 15 AND [Name] = N'xxxx')
    //DELETE FROM [Student] WHERE ([Id] = 15 AND [Name] = N'xxxx')
    
    List<Dictionary<string, object>> list = new List<Dictionary<string, object>>();
    
    var dic = new Dictionary<string, object>();
    dic.Add("Id", 15);
    dic.Add("Name", "xxxx");
    list.Add(dic);
    var dic1 = new Dictionary<string, object>();
    dic1.Add("Id", 14);
    dic1.Add("Name", "xxxx");
    list.Add(dic1);
    
    _freeSql.DeleteDict(list).AsTable(nameof(Student)).ToSql();
    //DELETE FROM [Student] WHERE (([Id] = 15 AND [Name] = N'xxxx') OR ([Id] = 14 AND [Name] = N'xxxx'))
     
      w(゚Д゚)w 使用字典删除会使用所有值使用AND拼接条件,多个字典之间使用OR拼接条件!!!(原以为使用对象删除会是这种方式)
     
     

    查询删除

      使用查询出来的数据集作为条件删除指定记录
    _freeSql.Select<Student>().Where(x => x.Age > 7).ToDelete().ToSql();
    //DELETE FROM [Student] WHERE ([Id] in (select * from (SELECT a.[Id] FROM[Student] a WHERE(a.[Age] > 7)) ftb_del))
     
     
      注意:
        出于安全考虑,没有条件不执行删除动作,避免误删除全表数据。
     
      删除全表数据:
        _freeSqll.Delete().Where("1=1").ExecuteAffrows();//慎用
     
     
     
     
     
  • 相关阅读:
    postgreSQL 时间线
    Using CSV-Format Log Output
    Understanding postgresql.conf : log*
    UNDERSTANDING POSTGRESQL.CONF: CHECKPOINT_SEGMENTS, CHECKPOINT_TIMEOUT, CHECKPOINT_WARNING
    PgSQL · 追根究底 · WAL日志空间的意外增长
    caffe源码学习
    Git 常用命令学习
    Linux系统的目录结构
    NMS 原理 了解
    nvidia-smi 查看GPU信息字段解读
  • 原文地址:https://www.cnblogs.com/zousc/p/16304649.html
Copyright © 2020-2023  润新知