<ul id="qxxfc"><fieldset id="qxxfc"><tr id="qxxfc"></tr></fieldset></ul>


      FreeSql支持豐富的更新數(shù)據(jù)方法,支持單條或批量更新,在特定的數(shù)據(jù)庫(kù)執(zhí)行還可以返回更新后的記錄值。
      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) //自動(dòng)同步實(shí)體結(jié)構(gòu)到數(shù)據(jù)庫(kù) .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.Update<Topic>().SetSource(items).ExecuteAffrows(); //UPDATE `tb_topic` SET
      `Clicks` = CASE `Id` WHEN 1 THEN ?p_0 WHEN 2 THEN ?p_1 WHEN 3 THEN ?p_2 WHEN 4
      THEN ?p_3 WHEN 5 THEN ?p_4 WHEN 6 THEN ?p_5 WHEN 7 THEN ?p_6 WHEN 8 THEN ?p_7
      WHEN 9 THEN ?p_8 WHEN 10 THEN ?p_9 END, `Title` = CASE `Id` WHEN 1 THEN ?p_10
      WHEN 2 THEN ?p_11 WHEN 3 THEN ?p_12 WHEN 4 THEN ?p_13 WHEN 5 THEN ?p_14 WHEN 6
      THEN ?p_15 WHEN 7 THEN ?p_16 WHEN 8 THEN ?p_17 WHEN 9 THEN ?p_18 WHEN 10 THEN
      ?p_19 END, `CreateTime` = CASE `Id` WHEN 1 THEN ?p_20 WHEN 2 THEN ?p_21 WHEN 3
      THEN ?p_22 WHEN 4 THEN ?p_23 WHEN 5 THEN ?p_24 WHEN 6 THEN ?p_25 WHEN 7 THEN
      ?p_26 WHEN 8 THEN ?p_27 WHEN 9 THEN ?p_28 WHEN 10 THEN ?p_29 END WHERE (`Id` IN
      (1,2,3,4,5,6,7,8,9,10))
      批量更新的場(chǎng)景,先查詢20條記錄,根據(jù)本地很復(fù)雜的規(guī)則把集合的值改完后

      傳統(tǒng)做法是循環(huán)20次保存,用 case when 只要一次就行

      批量更新,忽略一些列
      fsql.Update<Topic>().SetSource(items).IgnoreColumns(a => new { a.Clicks,
      a.CreateTime }).ExecuteAffrows(); //UPDATE `tb_topic` SET `Title` = CASE `Id`
      WHEN 1 THEN ?p_0 WHEN 2 THEN ?p_1 WHEN 3 THEN ?p_2 WHEN 4 THEN ?p_3 WHEN 5 THEN
      ?p_4 WHEN 6 THEN ?p_5 WHEN 7 THEN ?p_6 WHEN 8 THEN ?p_7 WHEN 9 THEN ?p_8 WHEN
      10 THEN ?p_9 END WHERE (`Id` IN (1,2,3,4,5,6,7,8,9,10))
      批量更新指定列
      fsql.Update<Topic>().SetSource(items).Set(a => a.CreateTime,
      DateTime.Now).ExecuteAffrows(); //UPDATE `tb_topic` SET `CreateTime` = ?p_0
      WHERE (`Id` IN (1,2,3,4,5,6,7,8,9,10))
      指定列更新后,批量保存將失效

      內(nèi)部實(shí)現(xiàn)

      當(dāng)更新大批量數(shù)據(jù)時(shí),內(nèi)部采用分割分批執(zhí)行的邏輯進(jìn)行。分割規(guī)則如下:

      數(shù)量 參數(shù)量
      MySql 5000 3000
      PostgreSQL 5000 3000
      SqlServer 1000 2100
      Oracle 500 999
      Sqlite 5000 999
      數(shù)據(jù):為每批分割的大小,如批量插入 10000 條數(shù)據(jù),在 mysql 執(zhí)行時(shí)會(huì)分割為兩批。
      參數(shù)量:為每批分割的參數(shù)量大小,如批量插入 10000 條數(shù)據(jù),每行需要使用 5 個(gè)參數(shù)化,在 mysql 執(zhí)行時(shí)會(huì)分割為每批 3000 / 5。

      分割執(zhí)行后,當(dāng)外部未提供事務(wù)時(shí),內(nèi)部自開(kāi)事務(wù),實(shí)現(xiàn)插入完整性。

      FreeSql 適配了每一種數(shù)據(jù)類型參數(shù)化,和不參數(shù)化的使用。批量插入建議關(guān)閉參數(shù)化功能,使用 .NonoParameter() 進(jìn)行執(zhí)行。

      API

      方法 返回值 參數(shù) 描述
      SetSource <this> T1 | IEnumerable 更新數(shù)據(jù),設(shè)置更新的實(shí)體
      IgnoreColumns <this> Lambda 忽略的列
      Set <this> Lambda, value 設(shè)置列的新值,Set(a => a.Name, "newvalue")
      Set <this> Lambda 設(shè)置列的的新值為基礎(chǔ)上增加,Set(a => a.Clicks + 1),相當(dāng)于 clicks=clicks+1;
      SetRaw <this> string, parms 設(shè)置值,自定義SQL語(yǔ)法,SetRaw("title = ?title", new { title
      = "newtitle" })
      Where <this> Lambda 表達(dá)式條件,僅支持實(shí)體基礎(chǔ)成員(不包含導(dǎo)航對(duì)象)
      Where <this> string, parms 原生sql語(yǔ)法條件,Where("id = ?id", new { id = 1 })
      Where <this> T1 | IEnumerable 傳入實(shí)體或集合,將其主鍵作為條件
      WhereExists <this> ISelect 子查詢是否存在
      WithTransaction <this> DbTransaction 設(shè)置事務(wù)對(duì)象
      ToSql string 返回即將執(zhí)行的SQL語(yǔ)句
      ExecuteAffrows long 執(zhí)行SQL語(yǔ)句,返回影響的行數(shù)
      ExecuteUpdated List<T1> 執(zhí)行SQL語(yǔ)句,返回更新后的記錄
      系列文章導(dǎo)航

      *
      (一)入門(mén) <https://www.cnblogs.com/FreeSql/p/11531300.html>

      *
      (二)自動(dòng)遷移實(shí)體 <https://www.cnblogs.com/FreeSql/p/11531301.html>

      *
      (三)實(shí)體特性 <https://www.cnblogs.com/FreeSql/p/11531302.html>

      *
      (四)實(shí)體特性 Fluent Api <https://www.cnblogs.com/FreeSql/p/11531304.html>

      *
      (五)插入數(shù)據(jù) <https://www.cnblogs.com/FreeSql/p/11531306.html>

      *
      (六)批量插入數(shù)據(jù) <https://www.cnblogs.com/FreeSql/p/11531309.html>

      *
      (七)插入數(shù)據(jù)時(shí)忽略列 <https://www.cnblogs.com/FreeSql/p/11531316.html>

      *
      (八)插入數(shù)據(jù)時(shí)指定列 <https://www.cnblogs.com/FreeSql/p/11531318.html>

      *
      (九)刪除數(shù)據(jù) <https://www.cnblogs.com/FreeSql/p/11531320.html>

      *
      (十)更新數(shù)據(jù) <https://www.cnblogs.com/FreeSql/p/11531321.html>

      *
      (十一)更新數(shù)據(jù) Where <https://www.cnblogs.com/FreeSql/p/11531324.html>

      *
      (十二)更新數(shù)據(jù)時(shí)指定列 <https://www.cnblogs.com/FreeSql/p/11531327.html>

      *
      (十三)更新數(shù)據(jù)時(shí)忽略列 <https://www.cnblogs.com/FreeSql/p/11531334.html>

      *
      (十四)批量更新數(shù)據(jù)

      *
      (十五)查詢數(shù)據(jù) <https://www.cnblogs.com/FreeSql/p/11531339.html>

      *
      (十六)分頁(yè)查詢 <https://www.cnblogs.com/FreeSql/p/11531341.html>

      *
      (十七)聯(lián)表查詢 <https://www.cnblogs.com/FreeSql/p/11531346.html>

      *
      (十八)導(dǎo)航屬性 <https://www.cnblogs.com/FreeSql/p/11531352.html>

      *
      (十九)多表查詢 <https://www.cnblogs.com/FreeSql/p/11531362.html>

      *
      (二十)多表查詢 WhereCascade <https://www.cnblogs.com/FreeSql/p/11531372.html>

      *
      (二十一)查詢返回?cái)?shù)據(jù) <https://www.cnblogs.com/FreeSql/p/11531376.html>

      *
      (二十二)Dto 映射查詢 <https://www.cnblogs.com/FreeSql/p/11531381.html>

      *
      (二十三)分組、聚合 <https://www.cnblogs.com/FreeSql/p/11531384.html>

      *
      (二十四)Linq To Sql 語(yǔ)法使用介紹 <https://www.cnblogs.com/FreeSql/p/11531392.html>

      *
      (二十五)延時(shí)加載 <https://www.cnblogs.com/FreeSql/p/11531395.html>

      *
      (二十六)貪婪加載 Include、IncludeMany、Dto、ToList
      <https://www.cnblogs.com/FreeSql/p/11531404.html>

      *
      (二十七)將已寫(xiě)好的 SQL 語(yǔ)句,與實(shí)體類映射進(jìn)行二次查詢
      <https://www.cnblogs.com/FreeSql/p/11531416.html>

      *
      (二十八)事務(wù) <https://www.cnblogs.com/FreeSql/p/11531423.html>

      *
      (二十九)Lambda 表達(dá)式 <https://www.cnblogs.com/FreeSql/p/11531425.html>

      *
      (三十)讀寫(xiě)分離 <https://www.cnblogs.com/FreeSql/p/11531430.html>

      *
      (三十一)分區(qū)分表 <https://www.cnblogs.com/FreeSql/p/11531435.html>

      *
      (三十二)Aop <https://www.cnblogs.com/FreeSql/p/11531471.html>

      *
      (三十三)CodeFirst 類型映射 <https://www.cnblogs.com/FreeSql/p/11531543.html>

      *
      (三十四)CodeFirst 遷移說(shuō)明 <https://www.cnblogs.com/FreeSql/p/11531550.html>

      *
      (三十五)CodeFirst 自定義特性 <https://www.cnblogs.com/FreeSql/p/11531576.html>

      友情鏈接
      ioDraw流程圖
      API參考文檔
      OK工具箱
      云服務(wù)器優(yōu)惠
      阿里云優(yōu)惠券
      騰訊云優(yōu)惠券
      京東云優(yōu)惠券
      站點(diǎn)信息
      問(wèn)題反饋
      郵箱:[email protected]
      QQ群:637538335
      關(guān)注微信

        <ul id="qxxfc"><fieldset id="qxxfc"><tr id="qxxfc"></tr></fieldset></ul>
          欧美性猛交XXX乱大交3蜜桃 | 日韩免费无码视频 | 人妻系列无码 | 很黄很色很爽无病毒网站 | 国产成人黄色小视频 | 婷婷五情天综合免费 | 日韩精品久久久一区二区 | 成人小说图片综合网 | 九九热综合网 | 好涨别揉小豆豆了要尿了 |