FreeSql (七)插入数据时忽略列


var connectionString = "Data Source=127.0.0.1;Port=3306;User ID=root;Password=root;" + 
    "Initial Catalog=cccddd;Charset=utf8;SslMode=none;Max pool size=10";

static IFreeSql fsql = new FreeSql.FreeSqlBuilder()
    .UseConnectionString(FreeSql.DataType.MySql, connectionString)
    .UseAutoSyncStructure(true) //自动同步实体结构到数据库
    .Build(); //请务必定义成 Singleton 单例模式

class Topic {
    [Column(IsIdentity = true, IsPrimary = true)]
    public int Id { get; set; }
    public int Clicks { get; set; }
    public string Title { get; set; }
    public DateTime CreateTime { get; set; }
}

var items = new List();
for (var a = 0; a < 10; a++) items.Add(new Topic { Id = a + 1, Title = $"newtitle{a}", Clicks = a * 100 });

忽略列

fsql.Insert(items).IgnoreColumns(a => a.CreateTime).ExecuteAffrows();

执行SQL如下:

INSERT INTO `tb_topic`(`Clicks`, `Title`) 
VALUES(@Clicks0, @Title0), (@Clicks1, @Title1), 
(@Clicks2, @Title2), (@Clicks3, @Title3), 
(@Clicks4, @Title4), (@Clicks5, @Title5), 
(@Clicks6, @Title6), (@Clicks7, @Title7), 
(@Clicks8, @Title8), (@Clicks9, @Title9)
fsql.Insert(items).IgnoreColumns(a => new { a.Title, a.CreateTime }).ExecuteAffrows();

执行SQL如下:

INSERT INTO `tb_topic`(`Clicks`) 
VALUES(@Clicks0), (@Clicks1), (@Clicks2), (@Clicks3), (@Clicks4), 
(@Clicks5), (@Clicks6), (@Clicks7), (@Clicks8), (@Clicks9)

API

方法 返回值 参数 描述
AppendData T1 | IEnumerable 追加准备插入的实体
InsertIdentity 指明插入自增列
InsertColumns Lambda 只插入的列
IgnoreColumns Lambda 忽略的列
CommandTimeout int 命令超时设置(秒)
WithTransaction DbTransaction 设置事务对象
WithConnection DbConnection 设置连接对象
ToSql string 返回即将执行的SQL语句
ExecuteAffrows long 执行SQL语句,返回影响的行数
ExecuteIdentity long 执行SQL语句,返回自增值
ExecuteInserted List 执行SQL语句,返回插入后的记录
ExecuteSqlBulkCopy void SqlServer 特有的功能,执行 SqlBulkCopy 批量插入的封装
ExecutePgCopy void PostgreSQL 特有的功能,执行 Copy 批量导入数据

系列文章导航

  • (七)插入数据时忽略列