FreeSql学习笔记——2.插入

前言

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

 

初始化

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

  

有了实体后新增个接口用于插入数据
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[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更快
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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)
1
2
3
4
5
6
7
8
9
_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();//忽略列

  

字典插入

  直接使用字典插入,无需使用实体
1
2
3
4
5
6
7
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特有的功能,有需要的同学可以了解下
 
 

 

posted @   贰拾~  阅读(993)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示