FreeSql(7)データを挿入するときにカラムを無視

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

IFreeSql fsql = new FreeSql.FreeSqlBuilder()
    .UseConnectionString(FreeSql.DataType.MySql, connstr)
    .UseAutoSyncStructure(true) //自动同步实体结构到数据库
    .Build();

[Table(Name = "tb_topic")]
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<Topic>();
for (var a = 0; a < 10; a++) items.Add(new Topic { Id = a + 1, Title = $"newtitle{a}", Clicks = a * 100 });

列を無視

fsql.Insert<Topic>(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<Topic>(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 <この> ラムダ ただ、列を挿入
IgnoreColumns <この> ラムダ 列を無視
WithTransaction <この> DbTransaction 設定したトランザクションオブジェクト
ToSql 実行するSQL文を返します。
ExecuteAffrows 長いです SQL文を実行する行数、リターンの影響
ExecuteIdentity 長いです 付加価値から返すSQL文を実行
ExecuteInserted 一覧<T1> レコードの挿入が返された後、SQL文を実行

おすすめ

転載: www.cnblogs.com/FreeSql/p/11531316.html