前言

  由于还没有表结构,就先从新增开始,插入一些数据后才好做查询、修改、删除操作。

初始化

  前面注入FreeSql时设置过自动同步表结构,那么就不用管数据库了,只需要在项目中定义实体,就会自动生成表结构,这里创建一个学生类Student

/// <summary>
/// 学生
/// </summary>
[Table(Name = "Student")]
public class Student
{
/// <summary>
/// 自增主键
/// </summary>
[Column(IsIdentity = true, IsPrimary = true)]
public long Id { get; set; } /// <summary>
/// 姓名
/// </summary>
[Column(IsNullable = false, DbType = "varchar(20)")]
public string Name { get; set; } /// <summary>
/// 年龄
/// </summary>
public int Age { get; set; } public StatusEnum Status { get; set; } /// <summary>
/// 添加时间
/// </summary>
public DateTime AddTime { get; set; } /// <summary>
/// 说明
/// </summary>
[Column(IsNullable =true,DbType = "varchar(100)")]
public string Remark { get; set; }
} /// <summary>
/// 状态枚举 1.正常 2.冻结
/// </summary>
public enum StatusEnum
{

Normal = 1, Freeze = 2
}

  

有了实体后新增个接口用于插入数据
[HttpGet("AddStudent")]
public async Task<ActionResult> AddStudent()
{
var student = new Student
{
Name = "小明",
Age = 8,
Status = StatusEnum.Normal,
AddTime = DateTime.Now
}; var res = await _freeSql.Insert<Student>().AppendData(student).ExecuteInsertedAsync(); return Ok();
}

 

批量插入

  批量插入可以使用ExecuteAffrows()、ExecuteSqlBulkCopy()方法,BulkCopy操作是扩展方法,可用的数据库有SqlServer/PostgreSQL/MySql,大批量插入使用BulkCopy更快
var studentList = new List<Student>();

for (int i = 0; i < 10; i++)
{
studentList.Add(new Student
{
Name = "小明" + i,
Age = i,
Status = StatusEnum.Normal,
AddTime = DateTime.Now
});
} //await _freeSql.Insert(studentList).ExecuteSqlBulkCopyAsync();
var res = await _freeSql.Insert(studentList).ExecuteAffrowsAsync(); return Ok();

  

插入指定列、忽略列

  正常情况下不指定列、不忽略列,将实体所有的字段插入数据库
  插入指定列就是指定字段插入,未指定的列不生成sql
  忽略列指定某一些字段不插入,与指定列相反
  忽略列和指定列同时设置同一字段以优先级为准
  插入的优先级:
    全部列 < 指定列(InsertColumns)< 忽略列(IgnoreColumns)
_freeSql.Insert(student1).ExecuteAffrowsAsync();//正常插入

_freeSql.Insert(student2)
.InsertColumns(x => new { x.Name, x.Age, x.Status, x.AddTime })
.ExecuteAffrowsAsync();//指定列
//等价于
_freeSql.Insert(student2)
.IgnoreColumns(x => x.Remark)
.ExecuteAffrowsAsync();//忽略列

  

字典插入

  直接使用字典插入,无需使用实体
var dic = new Dictionary<string, object>();
dic.Add("Name", "Dic");
dic.Add("Age", 1);
dic.Add("Status", StatusEnum.Normal);
dic.Add("AddTime", DateTime.Now); _freeSql.InsertDict(dic).AsTable(nameof(Student)).ExecuteAffrowsAsync();

  

 就插入数据而言,使用的较多的还是单个实体插入(第一种方式),如果是大批量插入建议使用BulkCopy,官方提供的插入方式还有导入表数据、Mysql特有的功能,有需要的同学可以了解下
 
 

FreeSql学习笔记——2.插入的更多相关文章

  1. MongoDB学习笔记~批量插入方法的实现

    回到目录 批量插入在EF时代大叔就自己封装过,原理是将多次SQL连接和多次向SQL发送的指令减少到1次,或者1000条数据1次,而对于EF产生的语句来说,这无疑是性能高效的,因为EF这边在处理时,每个 ...

  2. CUBRID学习笔记 22 插入数据

    CREATE TABLE auto_tbl(id INT AUTO_INCREMENT, name VARCHAR); 自增长的列可以插入null, 同时一次可以插入多条记录.别的和其他的sql数据库 ...

  3. MySQL学习笔记04 插入中文时出现ERROR 1366 (HY000)

    1 环境: MySQL Server 6.0  命令行工具 2 问题 :  插入中文字符数据出现如下错误: ERROR 1366 (HY000): Incorrect string value: '\ ...

  4. MongoDB学习笔记系列

    回到占占推荐博客索引 该来的总会来的,Ef,Redis,MVC甚至Sqlserver都有了自己的系列,MongoDB没有理由不去整理一下,这个系列都是平时在项目开发时总结出来的,希望可以为各位一些帮助 ...

  5. MongoDB学习笔记系列~目录

    MongoDB学习笔记~环境搭建 (2015-03-30 10:34) MongoDB学习笔记~MongoDBRepository仓储的实现 (2015-04-08 12:00) MongoDB学习笔 ...

  6. python3.4学习笔记(二十二) python 在字符串里面插入指定分割符,将list中的字符转为数字

    python3.4学习笔记(二十二) python 在字符串里面插入指定分割符,将list中的字符转为数字在字符串里面插入指定分割符的方法,先把字符串变成list然后用join方法变成字符串str=' ...

  7. MyBatis 学习笔记(七)批量插入ExecutorType.BATCH效率对比

    MyBatis 学习笔记(七)批量插入ExecutorType.BATCH效率对比一.在mybatis中ExecutorType的使用1.Mybatis内置的ExecutorType有3种,默认的是s ...

  8. JUC源码学习笔记8——ConcurrentHashMap源码分析1 如何实现低粒度锁的插入,如何实现统计元素个数,如何实现并发扩容迁移

    源码基于jdk1.8 这一片主要讲述ConcurrentHashMap如何实现低粒度锁的插入,如何实现统计元素个数,如何实现并发扩容迁移 系列文章目录和关于我 一丶ConcurrentHashMap概 ...

  9. SQLServer学习笔记系列1

    一.前言 一直自己没有学习做笔记的习惯,所以为了加强自己对知识的深入理解,决定将学习笔记写下来,希望向各位大牛们学习交流! 不当之处请斧正!在此感谢!这边就先从学习Sqlserver写起,自己本身对数 ...

  10. swift学习笔记1——基础部分

    之前学习swift时的个人笔记,根据github:the-swift-programming-language-in-chinese学习.总结,将重要的内容提取,加以理解后整理为学习笔记,方便以后查询 ...

随机推荐

  1. 如何使用docsify搭建自己的github文档?

    安装前提 确认电脑已经安装好 node 和 npm 环境. 如果还没有装好,那需要执行下面的步骤: 1.进入官网:https://nodejs.org/zh-cn/ , 下载长期支持版. 2.安装就直 ...

  2. S2P医药营销智能管理平台特点和优势

    S2P医药营销智能管理平台是正也科技打造的一个专为医药行业设计的综合性营销解决方案,旨在通过智能化.数据驱动的方式提升医药企业的营销效率和效果.以下是关于S2P医药营销智能管理平台的一些主要特点和优势 ...

  3. Python3 print不输出回车符

    Python3 print的函数原型: print(*objects, sep=' ', end='\n', file=sys.stdout, flush=False) objects ---- 输出 ...

  4. DASCTF X CBCTF 2023 Misc Justlisten WP

    DASCTF X CBCTF 2023 Misc Justlisten WP 又是一道很抽象的misc题 首先附件给了一个汉信码,扫码得到: 提示我们使用oursecret: password为0ur ...

  5. C#日期类型转化总结【转化,农历,节气,星期】

    转为日期类型 将8位日期字符串转换为日期格式 dateStr = "20220203"; System.IFormatProvider format=new System.Glob ...

  6. Postgresql使用触发器实现同步插入两张表

    在有一个陈旧的系统的情况下,如果升级API可以优先使用微服务的形式,将数据库进行独立拆分,将原来的数据库原原本本地固定在旧系统中,然后在独立的微服务中运行与部署新系统. 如果原有的数据需要在更换结构的 ...

  7. 判断移动终端类型安卓苹果鸿蒙、查看设备详细信息、跳转到各手机应用商店、判断APP是否已安装

      案例1:判断移动终端类型,微信扫描二维码链接可以区分华为(荣耀).安卓.苹果手机.华为及荣耀会跳到华为应用商店.安卓会提示浏览器打开.苹果跳到苹果商店. <!DOCTYPE html> ...

  8. Docker 容器运行一个 web 应用

    Docker 容器安装和基础使用请看上一篇 Docker 容器运行一个 web 应用 使用 docker 构建一个 web 应用程序. docker pull training/webapp # 载入 ...

  9. Qt编写的项目作品17-自定义曲线图柱状图

    一.功能特点 可设置X轴Y轴范围值. 可设置背景颜色.文本颜色.网格颜色. 可设置三条曲线颜色.颜色集合. 可设置是否显示十字定位线,支持分别开启横向或者纵向定位线. 可设置十字定位线的宽度.颜色. ...

  10. Qt编写地图综合应用1-闪烁点图

    一.前言 Qt作为一个超大型的一站式GUI超市开发集成环境,不仅集成了大量的可视化UI组件,还提供了网络库.数据库操作.文件操作等类库,封装的还是相当精彩一步到位,根据个人身边的一些程序员朋友了解,自 ...