From f618a26290f6a06a40ea051cc6ac76465038997b Mon Sep 17 00:00:00 2001 From: 28810 <28810@YEXIANGQIN> Date: Thu, 27 Feb 2020 18:40:06 +0800 Subject: [PATCH] update --- Home.md | 4 ++-- _Sidebar.md | 4 ++-- 修改.md | 35 ++++++++++++++++++++++++----------- 添加.md | 34 +++++++++++++++++++++++++++------- 4 files changed, 55 insertions(+), 22 deletions(-) diff --git a/Home.md b/Home.md index c560c78..848d1ad 100644 --- a/Home.md +++ b/Home.md @@ -16,8 +16,8 @@ FreeSql是一个功能强大的NETStandard库,用于对象关系映射程序(O * [安装](https://github.com/2881099/FreeSql/wiki/%e5%ae%89%e8%a3%85) * CURD(增删查改) * [添加](https://github.com/2881099/FreeSql/wiki/%e6%b7%bb%e5%8a%a0) - * [单条添加](https://github.com/2881099/FreeSql/wiki/%e6%b7%bb%e5%8a%a0#%e6%8f%92%e5%85%a5) - * [批量添加](https://github.com/2881099/FreeSql/wiki/%e6%b7%bb%e5%8a%a0#%e6%89%b9%e9%87%8f%e6%8f%92%e5%85%a5) + * [单条添加](https://github.com/2881099/FreeSql/wiki/%e6%b7%bb%e5%8a%a0#1%E5%8D%95%E6%9D%A1%E6%8F%92%E5%85%A5) + * [批量添加](https://github.com/2881099/FreeSql/wiki/%e6%b7%bb%e5%8a%a0#2%E6%89%B9%E9%87%8F%E6%8F%92%E5%85%A5) * [删除](https://github.com/2881099/FreeSql/wiki/%e5%88%a0%e9%99%a4) * [修改](https://github.com/2881099/FreeSql/wiki/%e4%bf%ae%e6%94%b9) * [保存](https://github.com/2881099/FreeSql/wiki/%e4%bf%ae%e6%94%b9#%e4%bf%9d%e5%ad%98%e5%ae%9e%e4%bd%93) diff --git a/_Sidebar.md b/_Sidebar.md index 16b1d52..6b6f9f4 100644 --- a/_Sidebar.md +++ b/_Sidebar.md @@ -4,8 +4,8 @@ * [安装](https://github.com/2881099/FreeSql/wiki/%e5%ae%89%e8%a3%85) * CURD(增删查改) * [添加](https://github.com/2881099/FreeSql/wiki/%e6%b7%bb%e5%8a%a0) - * [单条添加](https://github.com/2881099/FreeSql/wiki/%e6%b7%bb%e5%8a%a0#%e6%8f%92%e5%85%a5) - * [批量添加](https://github.com/2881099/FreeSql/wiki/%e6%b7%bb%e5%8a%a0#%e6%89%b9%e9%87%8f%e6%8f%92%e5%85%a5) + * [单条添加](https://github.com/2881099/FreeSql/wiki/%e6%b7%bb%e5%8a%a0#1%E5%8D%95%E6%9D%A1%E6%8F%92%E5%85%A5) + * [批量添加](https://github.com/2881099/FreeSql/wiki/%e6%b7%bb%e5%8a%a0#2%E6%89%B9%E9%87%8F%E6%8F%92%E5%85%A5) * [删除](https://github.com/2881099/FreeSql/wiki/%e5%88%a0%e9%99%a4) * [修改](https://github.com/2881099/FreeSql/wiki/%e4%bf%ae%e6%94%b9) * [保存](https://github.com/2881099/FreeSql/wiki/%e4%bf%ae%e6%94%b9#%e4%bf%9d%e5%ad%98%e5%ae%9e%e4%bd%93) diff --git a/修改.md b/修改.md index 056b707..e1327a5 100644 --- a/修改.md +++ b/修改.md @@ -34,48 +34,61 @@ dywhere 支持 ## 1、更新指定列 ```csharp var t1 = fsql.Update(1).Set(a => a.CreateTime, DateTime.Now).ExecuteAffrows(); -//UPDATE `tb_topic` SET `CreateTime` = '2018-12-08 00:04:59' WHERE (`Id` = 1) +//UPDATE `tb_topic` SET `CreateTime` = '2018-12-08 00:04:59' +//WHERE (`Id` = 1) ``` > 支持 Set() 多次,相当于拼接 ```csharp var t2 = fsql.Update(1).Set(a => a.Clicks + 1).ExecuteAffrows(); -//UPDATE `tb_topic` SET `Clicks` = ifnull(`Clicks`,0) + 1 WHERE (`Id` = 1) +//UPDATE `tb_topic` SET `Clicks` = ifnull(`Clicks`,0) + 1 +//WHERE (`Id` = 1) var t2 = fsql.Update(1).Set(a => new Topic { Clicks = a.Clicks + 1, Time = DateTime.Now }).ExecuteAffrows(); -//UPDATE `tb_topic` SET `Clicks` = `Clicks` + 1, Time = now() WHERE (`Id` = 1) +//UPDATE `tb_topic` SET `Clicks` = `Clicks` + 1, Time = now() +//WHERE (`Id` = 1) ``` ## 2、保存实体 ```csharp var item = new Topic { Id = 1, Title = "newtitle" }; var t3 = fsql.Update().SetSource(item).ExecuteAffrows(); -//UPDATE `tb_topic` SET `Clicks` = ?p_0, `Title` = ?p_1, `CreateTime` = ?p_2 WHERE (`Id` = 1) +//UPDATE `tb_topic` SET `Clicks` = ?p_0, `Title` = ?p_1, `CreateTime` = ?p_2 +//WHERE (`Id` = 1) var t4 = fsql.Update().SetSource(item).UpdateColumns(a => new { a.Title, a.CreateTime }).ExecuteAffrows(); -//UPDATE `tb_topic` SET `Title` = ?p_0, `CreateTime` = ?p_1 WHERE (`Id` = 1) +//UPDATE `tb_topic` SET `Title` = ?p_0, `CreateTime` = ?p_1 +//WHERE (`Id` = 1) var t5 = fsql.Update().SetSource(item).UpdateColumns(a => a.Title).ExecuteAffrows(); -//UPDATE `tb_topic` SET `Title` = ?p_0 WHERE (`Id` = 1) +//UPDATE `tb_topic` SET `Title` = ?p_0 +//WHERE (`Id` = 1) var t4 = fsql.Update().SetSource(item).IgnoreColumns(a => a.Clicks).ExecuteAffrows(); -//UPDATE `tb_topic` SET `Title` = ?p_0, `CreateTime` = ?p_1 WHERE (`Id` = 1) +//UPDATE `tb_topic` SET `Title` = ?p_0, `CreateTime` = ?p_1 +//WHERE (`Id` = 1) var t5 = fsql.Update().SetSource(item).IgnoreColumns(a => new { a.Clicks, a.CreateTime }).ExecuteAffrows(); -//UPDATE `tb_topic` SET `Title` = ?p_0 WHERE (`Id` = 1) +//UPDATE `tb_topic` SET `Title` = ?p_0 +//WHERE (`Id` = 1) var items = new List(); for (var a = 0; a < 10; a++) items.Add(new Topic { Id = a + 1, Title = $"newtitle{a}", Clicks = a * 100 }); var t6 = fsql.Update().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)) +//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)) var t7 = fsql.Update().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)) +//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)) var t8 = fsql.Update().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)) +//UPDATE `tb_topic` SET `CreateTime` = ?p_0 +//WHERE (`Id` IN (1,2,3,4,5,6,7,8,9,10)) ``` > 指定列更新后,SetSource 将失效 diff --git a/添加.md b/添加.md index e3dda18..a5c0cd2 100644 --- a/添加.md +++ b/添加.md @@ -26,14 +26,20 @@ for (var a = 0; a < 10; a++) items.Add(new Topic { Id = a + 1, Title = $"newtitl ```csharp var t1 = fsql.Insert(items.First()).ExecuteAffrows(); -//INSERT INTO `tb_topic`(`Clicks`, `Title`, `CreateTime`) VALUES(?Clicks0, ?Title0, ?CreateTime0) +//INSERT INTO `tb_topic`(`Clicks`, `Title`, `CreateTime`) +//VALUES(?Clicks0, ?Title0, ?CreateTime0) ``` ## 2、批量插入 ```csharp var t2 = fsql.Insert(items).ExecuteAffrows(); -//INSERT INTO `tb_topic`(`Clicks`, `Title`, `CreateTime`) VALUES(?Clicks0, ?Title0, ?CreateTime0), (?Clicks1, ?Title1, ?CreateTime1), (?Clicks2, ?Title2, ?CreateTime2), (?Clicks3, ?Title3, ?CreateTime3), (?Clicks4, ?Title4, ?CreateTime4), (?Clicks5, ?Title5, ?CreateTime5), (?Clicks6, ?Title6, ?CreateTime6), (?Clicks7, ?Title7, ?CreateTime7), (?Clicks8, ?Title8, ?CreateTime8), (?Clicks9, ?Title9, ?CreateTime9) +//INSERT INTO `tb_topic`(`Clicks`, `Title`, `CreateTime`) +//VALUES(?Clicks0, ?Title0, ?CreateTime0), (?Clicks1, ?Title1, ?CreateTime1), +//(?Clicks2, ?Title2, ?CreateTime2), (?Clicks3, ?Title3, ?CreateTime3), +//(?Clicks4, ?Title4, ?CreateTime4), (?Clicks5, ?Title5, ?CreateTime5), +//(?Clicks6, ?Title6, ?CreateTime6), (?Clicks7, ?Title7, ?CreateTime7), +//(?Clicks8, ?Title8, ?CreateTime8), (?Clicks9, ?Title9, ?CreateTime9) ``` > 解决了 SqlServer 批量添加容易导致的错误:传入的请求具有过多的参数。该服务器支持最多 2100 个参数。请减少参数的数目,然后重新发送该请求。 @@ -87,20 +93,32 @@ v1.0.0 版本增加了 Bulk Copy 操作,以扩展方法的形式实现,目 ```csharp var t3 = fsql.Insert(items).InsertColumns(a => a.Title).ExecuteAffrows(); -//INSERT INTO `tb_topic`(`Title`) VALUES(?Title0), (?Title1), (?Title2), (?Title3), (?Title4), (?Title5), (?Title6), (?Title7), (?Title8), (?Title9) +//INSERT INTO `tb_topic`(`Title`) +//VALUES(?Title0), (?Title1), (?Title2), (?Title3), (?Title4), +//(?Title5), (?Title6), (?Title7), (?Title8), (?Title9) var t4 = fsql.Insert(items).InsertColumns(a =>new { a.Title, a.Clicks }).ExecuteAffrows(); -//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) +//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) ``` ## 5、忽略列 ```csharp var t5 = fsql.Insert(items).IgnoreColumns(a => a.CreateTime).ExecuteAffrows(); -//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) +//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) var t6 = fsql.Insert(items).IgnoreColumns(a => new { a.Title, a.CreateTime }).ExecuteAffrows(); -///INSERT INTO `tb_topic`(`Clicks`) VALUES(?Clicks0), (?Clicks1), (?Clicks2), (?Clicks3), (?Clicks4), (?Clicks5), (?Clicks6), (?Clicks7), (?Clicks8), (?Clicks9) +///INSERT INTO `tb_topic`(`Clicks`) +//VALUES(?Clicks0), (?Clicks1), (?Clicks2), (?Clicks3), (?Clicks4), +//(?Clicks5), (?Clicks6), (?Clicks7), (?Clicks8), (?Clicks9) ``` ## 6、列插入优先级 @@ -119,7 +137,9 @@ var t6 = fsql.Insert(items).IgnoreColumns(a => new { a.Title, a.CreateTime }).Ex ```csharp fsql.Insert().MySqlIgnoreInto().AppendData(items).ExecuteAffrows(); -///INSERT IGNORE INTO `tb_topic`(`Clicks`) VALUES(?Clicks0), (?Clicks1), (?Clicks2), (?Clicks3), (?Clicks4), (?Clicks5), (?Clicks6), (?Clicks7), (?Clicks8), (?Clicks9) +///INSERT IGNORE INTO `tb_topic`(`Clicks`) +//VALUES(?Clicks0), (?Clicks1), (?Clicks2), (?Clicks3), (?Clicks4), +//(?Clicks5), (?Clicks6), (?Clicks7), (?Clicks8), (?Clicks9) ``` ## 8、MySql 特有功能 On Duplicate Key Update