mirror of
https://github.com/dotnetcore/FreeSql.git
synced 2026-02-06 00:10:55 +08:00
update
4
Home.md
4
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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
35
修改.md
35
修改.md
@@ -34,48 +34,61 @@ dywhere 支持
|
||||
## 1、更新指定列
|
||||
```csharp
|
||||
var t1 = fsql.Update<Topic>(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<Topic>(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<Topic>(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<Topic>().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<Topic>().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<Topic>().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<Topic>().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<Topic>().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<Topic>();
|
||||
for (var a = 0; a < 10; a++) items.Add(new Topic { Id = a + 1, Title = $"newtitle{a}", Clicks = a * 100 });
|
||||
var t6 = 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))
|
||||
//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<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))
|
||||
//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<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))
|
||||
//UPDATE `tb_topic` SET `CreateTime` = ?p_0
|
||||
//WHERE (`Id` IN (1,2,3,4,5,6,7,8,9,10))
|
||||
```
|
||||
|
||||
> 指定列更新后,SetSource 将失效
|
||||
|
||||
34
添加.md
34
添加.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<Topic>().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
|
||||
|
||||
Reference in New Issue
Block a user