From 21b4b0d5d396b2a97c3dd2abea5f1e7bf8129935 Mon Sep 17 00:00:00 2001
From: 28810 <28810@YEXIANGQIN>
Date: Wed, 30 Oct 2019 20:35:42 +0800
Subject: [PATCH] =?UTF-8?q?-=20=E5=A2=9E=E5=8A=A0=20ISelect=20ToDelete/ToU?=
=?UTF-8?q?pdate=20=E6=96=B9=E6=B3=95=EF=BC=8C=E5=AE=9E=E7=8E=B0=E6=9B=B4?=
=?UTF-8?q?=E5=A4=8D=E6=9D=82=E7=9A=84=E5=88=A0=E9=99=A4/=E6=9B=B4?=
=?UTF-8?q?=E6=96=B0=E6=93=8D=E4=BD=9C=EF=BC=9B?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
FreeSql.DbContext/FreeSql.DbContext.xml | 7 +
.../MySqlConnector/Curd/MySqlSelectTest.cs | 134 ++++++++++++++++++
.../Default/Curd/OdbcSelectTest.cs | 134 ++++++++++++++++++
.../MySql/Curd/MySqlSelectTest.cs | 134 ++++++++++++++++++
.../Oracle/Curd/OracleSelectTest.cs | 134 ++++++++++++++++++
.../PostgreSQL/Curd/PostgreSQLSelectTest.cs | 134 ++++++++++++++++++
.../SqlServer/Curd/SqlServerSelectTest.cs | 134 ++++++++++++++++++
.../MySql/Curd/MySqlSelectTest.cs | 134 ++++++++++++++++++
.../Oracle/Curd/OracleSelectTest.cs | 134 ++++++++++++++++++
.../PostgreSQL/Curd/PostgreSQLSelectTest.cs | 134 ++++++++++++++++++
.../SqlServer/Curd/SqlServerSelectTest.cs | 134 ++++++++++++++++++
.../Sqlite/Curd/SqliteSelectTest.cs | 134 ++++++++++++++++++
FreeSql/FreeSql.xml | 30 +++-
FreeSql/Interface/Curd/IDelete.cs | 3 +-
FreeSql/Interface/Curd/ISelect/ISelect0.cs | 25 +++-
FreeSql/Interface/Curd/IUpdate.cs | 3 +-
.../SelectProvider/Select0Provider.cs | 37 +++++
FreeSql/Internal/UtilsExpressionTree.cs | 6 +-
.../Default/OdbcAdapter.cs | 6 +-
.../SqlServer/OdbcSqlServerUtils.cs | 6 +-
.../SqlServerUtils.cs | 6 +-
21 files changed, 1594 insertions(+), 9 deletions(-)
diff --git a/FreeSql.DbContext/FreeSql.DbContext.xml b/FreeSql.DbContext/FreeSql.DbContext.xml
index 3f9fb047..2711e35d 100644
--- a/FreeSql.DbContext/FreeSql.DbContext.xml
+++ b/FreeSql.DbContext/FreeSql.DbContext.xml
@@ -99,6 +99,13 @@
清空状态数据
+
+
+ 根据 lambda 条件删除数据
+
+
+
+
添加
diff --git a/FreeSql.Tests/FreeSql.Tests.Provider.MySqlConnector/MySqlConnector/Curd/MySqlSelectTest.cs b/FreeSql.Tests/FreeSql.Tests.Provider.MySqlConnector/MySqlConnector/Curd/MySqlSelectTest.cs
index 792618fc..03ead48d 100644
--- a/FreeSql.Tests/FreeSql.Tests.Provider.MySqlConnector/MySqlConnector/Curd/MySqlSelectTest.cs
+++ b/FreeSql.Tests/FreeSql.Tests.Provider.MySqlConnector/MySqlConnector/Curd/MySqlSelectTest.cs
@@ -1358,5 +1358,139 @@ namespace FreeSql.Tests.MySqlConnector
.Where(a => a.Tag.Id == tag1.Id || a.Tag.Id == tag2.Id)
.ToList(true);
}
+
+ public class ToDel1Pk
+ {
+ [Column(IsIdentity = true)]
+ public int id { get; set; }
+ public string name { get; set; }
+ }
+ public class ToDel2Pk
+ {
+ [Column(IsPrimary = true)]
+ public Guid pk1 { get; set; }
+ [Column(IsPrimary = true)]
+ public string pk2 { get; set; }
+ public string name { get; set; }
+ }
+ public class ToDel3Pk
+ {
+ [Column(IsPrimary = true)]
+ public Guid pk1 { get; set; }
+ [Column(IsPrimary = true)]
+ public int pk2 { get; set; }
+ [Column(IsPrimary = true)]
+ public string pk3 { get; set; }
+ public string name { get; set; }
+ }
+ [Fact]
+ public void ToDelete()
+ {
+ g.mysql.Select().ToDelete().ExecuteAffrows();
+ Assert.Equal(0, g.mysql.Select().Count());
+ g.mysql.Insert(new[] {
+ new ToDel1Pk{ name = "name1"},
+ new ToDel1Pk{ name = "name2"},
+ new ToDel1Pk{ name = "nick1"},
+ new ToDel1Pk{ name = "nick2"},
+ new ToDel1Pk{ name = "nick3"}
+ }).ExecuteAffrows();
+ Assert.Equal(2, g.mysql.Select().Where(a => a.name.StartsWith("name")).ToDelete().ExecuteAffrows());
+ Assert.Equal(3, g.mysql.Select().Count());
+ Assert.Equal(3, g.mysql.Select().Where(a => a.name.StartsWith("nick")).Count());
+
+ g.mysql.Select().ToDelete().ExecuteAffrows();
+ Assert.Equal(0, g.mysql.Select().Count());
+ g.mysql.Insert(new[] {
+ new ToDel2Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = "pk2", name = "name1"},
+ new ToDel2Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = "pk2", name = "name2"},
+ new ToDel2Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = "pk2", name = "nick1"},
+ new ToDel2Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = "pk2", name = "nick2"},
+ new ToDel2Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = "pk2", name = "nick3"}
+ }).ExecuteAffrows();
+ Assert.Equal(2, g.mysql.Select().Where(a => a.name.StartsWith("name")).ToDelete().ExecuteAffrows());
+ Assert.Equal(3, g.mysql.Select().Count());
+ Assert.Equal(3, g.mysql.Select().Where(a => a.name.StartsWith("nick")).Count());
+
+ g.mysql.Select().ToDelete().ExecuteAffrows();
+ Assert.Equal(0, g.mysql.Select().Count());
+ g.mysql.Insert(new[] {
+ new ToDel3Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = 1, pk3 = "pk3", name = "name1"},
+ new ToDel3Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = 1, pk3 = "pk3", name = "name2"},
+ new ToDel3Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = 1, pk3 = "pk3", name = "nick1"},
+ new ToDel3Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = 1, pk3 = "pk3", name = "nick2"},
+ new ToDel3Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = 1, pk3 = "pk3", name = "nick3"}
+ }).ExecuteAffrows();
+ Assert.Equal(2, g.mysql.Select().Where(a => a.name.StartsWith("name")).ToDelete().ExecuteAffrows());
+ Assert.Equal(3, g.mysql.Select().Count());
+ Assert.Equal(3, g.mysql.Select().Where(a => a.name.StartsWith("nick")).Count());
+ }
+
+ public class ToUpd1Pk
+ {
+ [Column(IsIdentity = true)]
+ public int id { get; set; }
+ public string name { get; set; }
+ }
+ public class ToUpd2Pk
+ {
+ [Column(IsPrimary = true)]
+ public Guid pk1 { get; set; }
+ [Column(IsPrimary = true)]
+ public string pk2 { get; set; }
+ public string name { get; set; }
+ }
+ public class ToUpd3Pk
+ {
+ [Column(IsPrimary = true)]
+ public Guid pk1 { get; set; }
+ [Column(IsPrimary = true)]
+ public int pk2 { get; set; }
+ [Column(IsPrimary = true)]
+ public string pk3 { get; set; }
+ public string name { get; set; }
+ }
+ [Fact]
+ public void ToUpdate()
+ {
+ g.mysql.Select().ToDelete().ExecuteAffrows();
+ Assert.Equal(0, g.mysql.Select().Count());
+ g.mysql.Insert(new[] {
+ new ToUpd1Pk{ name = "name1"},
+ new ToUpd1Pk{ name = "name2"},
+ new ToUpd1Pk{ name = "nick1"},
+ new ToUpd1Pk{ name = "nick2"},
+ new ToUpd1Pk{ name = "nick3"}
+ }).ExecuteAffrows();
+ Assert.Equal(2, g.mysql.Select().Where(a => a.name.StartsWith("name")).ToUpdate().Set(a => a.name, "nick?").ExecuteAffrows());
+ Assert.Equal(5, g.mysql.Select().Count());
+ Assert.Equal(5, g.mysql.Select().Where(a => a.name.StartsWith("nick")).Count());
+
+ g.mysql.Select().ToDelete().ExecuteAffrows();
+ Assert.Equal(0, g.mysql.Select().Count());
+ g.mysql.Insert(new[] {
+ new ToUpd2Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = "pk2", name = "name1"},
+ new ToUpd2Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = "pk2", name = "name2"},
+ new ToUpd2Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = "pk2", name = "nick1"},
+ new ToUpd2Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = "pk2", name = "nick2"},
+ new ToUpd2Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = "pk2", name = "nick3"}
+ }).ExecuteAffrows();
+ Assert.Equal(2, g.mysql.Select().Where(a => a.name.StartsWith("name")).ToUpdate().Set(a => a.name, "nick?").ExecuteAffrows());
+ Assert.Equal(5, g.mysql.Select().Count());
+ Assert.Equal(5, g.mysql.Select().Where(a => a.name.StartsWith("nick")).Count());
+
+ g.mysql.Select().ToDelete().ExecuteAffrows();
+ Assert.Equal(0, g.mysql.Select().Count());
+ g.mysql.Insert(new[] {
+ new ToUpd3Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = 1, pk3 = "pk3", name = "name1"},
+ new ToUpd3Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = 1, pk3 = "pk3", name = "name2"},
+ new ToUpd3Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = 1, pk3 = "pk3", name = "nick1"},
+ new ToUpd3Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = 1, pk3 = "pk3", name = "nick2"},
+ new ToUpd3Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = 1, pk3 = "pk3", name = "nick3"}
+ }).ExecuteAffrows();
+ Assert.Equal(2, g.mysql.Select().Where(a => a.name.StartsWith("name")).ToUpdate().Set(a => a.name, "nick?").ExecuteAffrows());
+ Assert.Equal(5, g.mysql.Select().Count());
+ Assert.Equal(5, g.mysql.Select().Where(a => a.name.StartsWith("nick")).Count());
+ }
}
}
diff --git a/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/Default/Curd/OdbcSelectTest.cs b/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/Default/Curd/OdbcSelectTest.cs
index a9184ea1..a381b2fa 100644
--- a/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/Default/Curd/OdbcSelectTest.cs
+++ b/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/Default/Curd/OdbcSelectTest.cs
@@ -1202,5 +1202,139 @@ namespace FreeSql.Tests.Odbc.Default
.Where(a => a.Tag.Id == tag1.Id || a.Tag.Id == tag2.Id)
.ToList(true);
}
+
+ public class ToDel1Pk
+ {
+ [Column(IsIdentity = true)]
+ public int id { get; set; }
+ public string name { get; set; }
+ }
+ public class ToDel2Pk
+ {
+ [Column(IsPrimary = true)]
+ public Guid pk1 { get; set; }
+ [Column(IsPrimary = true)]
+ public string pk2 { get; set; }
+ public string name { get; set; }
+ }
+ public class ToDel3Pk
+ {
+ [Column(IsPrimary = true)]
+ public Guid pk1 { get; set; }
+ [Column(IsPrimary = true)]
+ public int pk2 { get; set; }
+ [Column(IsPrimary = true)]
+ public string pk3 { get; set; }
+ public string name { get; set; }
+ }
+ [Fact]
+ public void ToDelete()
+ {
+ g.odbc.Select().ToDelete().ExecuteAffrows();
+ Assert.Equal(0, g.odbc.Select().Count());
+ g.odbc.Insert(new[] {
+ new ToDel1Pk{ name = "name1"},
+ new ToDel1Pk{ name = "name2"},
+ new ToDel1Pk{ name = "nick1"},
+ new ToDel1Pk{ name = "nick2"},
+ new ToDel1Pk{ name = "nick3"}
+ }).ExecuteAffrows();
+ Assert.Equal(2, g.odbc.Select().Where(a => a.name.StartsWith("name")).ToDelete().ExecuteAffrows());
+ Assert.Equal(3, g.odbc.Select().Count());
+ Assert.Equal(3, g.odbc.Select().Where(a => a.name.StartsWith("nick")).Count());
+
+ g.odbc.Select().ToDelete().ExecuteAffrows();
+ Assert.Equal(0, g.odbc.Select().Count());
+ g.odbc.Insert(new[] {
+ new ToDel2Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = "pk2", name = "name1"},
+ new ToDel2Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = "pk2", name = "name2"},
+ new ToDel2Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = "pk2", name = "nick1"},
+ new ToDel2Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = "pk2", name = "nick2"},
+ new ToDel2Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = "pk2", name = "nick3"}
+ }).ExecuteAffrows();
+ Assert.Equal(2, g.odbc.Select().Where(a => a.name.StartsWith("name")).ToDelete().ExecuteAffrows());
+ Assert.Equal(3, g.odbc.Select().Count());
+ Assert.Equal(3, g.odbc.Select().Where(a => a.name.StartsWith("nick")).Count());
+
+ g.odbc.Select().ToDelete().ExecuteAffrows();
+ Assert.Equal(0, g.odbc.Select().Count());
+ g.odbc.Insert(new[] {
+ new ToDel3Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = 1, pk3 = "pk3", name = "name1"},
+ new ToDel3Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = 1, pk3 = "pk3", name = "name2"},
+ new ToDel3Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = 1, pk3 = "pk3", name = "nick1"},
+ new ToDel3Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = 1, pk3 = "pk3", name = "nick2"},
+ new ToDel3Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = 1, pk3 = "pk3", name = "nick3"}
+ }).ExecuteAffrows();
+ Assert.Equal(2, g.odbc.Select().Where(a => a.name.StartsWith("name")).ToDelete().ExecuteAffrows());
+ Assert.Equal(3, g.odbc.Select().Count());
+ Assert.Equal(3, g.odbc.Select().Where(a => a.name.StartsWith("nick")).Count());
+ }
+
+ public class ToUpd1Pk
+ {
+ [Column(IsIdentity = true)]
+ public int id { get; set; }
+ public string name { get; set; }
+ }
+ public class ToUpd2Pk
+ {
+ [Column(IsPrimary = true)]
+ public Guid pk1 { get; set; }
+ [Column(IsPrimary = true)]
+ public string pk2 { get; set; }
+ public string name { get; set; }
+ }
+ public class ToUpd3Pk
+ {
+ [Column(IsPrimary = true)]
+ public Guid pk1 { get; set; }
+ [Column(IsPrimary = true)]
+ public int pk2 { get; set; }
+ [Column(IsPrimary = true)]
+ public string pk3 { get; set; }
+ public string name { get; set; }
+ }
+ [Fact]
+ public void ToUpdate()
+ {
+ g.odbc.Select().ToDelete().ExecuteAffrows();
+ Assert.Equal(0, g.odbc.Select().Count());
+ g.odbc.Insert(new[] {
+ new ToUpd1Pk{ name = "name1"},
+ new ToUpd1Pk{ name = "name2"},
+ new ToUpd1Pk{ name = "nick1"},
+ new ToUpd1Pk{ name = "nick2"},
+ new ToUpd1Pk{ name = "nick3"}
+ }).ExecuteAffrows();
+ Assert.Equal(2, g.odbc.Select().Where(a => a.name.StartsWith("name")).ToUpdate().Set(a => a.name, "nick?").ExecuteAffrows());
+ Assert.Equal(5, g.odbc.Select().Count());
+ Assert.Equal(5, g.odbc.Select().Where(a => a.name.StartsWith("nick")).Count());
+
+ g.odbc.Select().ToDelete().ExecuteAffrows();
+ Assert.Equal(0, g.odbc.Select().Count());
+ g.odbc.Insert(new[] {
+ new ToUpd2Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = "pk2", name = "name1"},
+ new ToUpd2Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = "pk2", name = "name2"},
+ new ToUpd2Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = "pk2", name = "nick1"},
+ new ToUpd2Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = "pk2", name = "nick2"},
+ new ToUpd2Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = "pk2", name = "nick3"}
+ }).ExecuteAffrows();
+ Assert.Equal(2, g.odbc.Select().Where(a => a.name.StartsWith("name")).ToUpdate().Set(a => a.name, "nick?").ExecuteAffrows());
+ Assert.Equal(5, g.odbc.Select().Count());
+ Assert.Equal(5, g.odbc.Select().Where(a => a.name.StartsWith("nick")).Count());
+
+ g.odbc.Select().ToDelete().ExecuteAffrows();
+ Assert.Equal(0, g.odbc.Select().Count());
+ g.odbc.Insert(new[] {
+ new ToUpd3Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = 1, pk3 = "pk3", name = "name1"},
+ new ToUpd3Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = 1, pk3 = "pk3", name = "name2"},
+ new ToUpd3Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = 1, pk3 = "pk3", name = "nick1"},
+ new ToUpd3Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = 1, pk3 = "pk3", name = "nick2"},
+ new ToUpd3Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = 1, pk3 = "pk3", name = "nick3"}
+ }).ExecuteAffrows();
+ Assert.Equal(2, g.odbc.Select().Where(a => a.name.StartsWith("name")).ToUpdate().Set(a => a.name, "nick?").ExecuteAffrows());
+ Assert.Equal(5, g.odbc.Select().Count());
+ Assert.Equal(5, g.odbc.Select().Where(a => a.name.StartsWith("nick")).Count());
+ }
}
}
diff --git a/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/MySql/Curd/MySqlSelectTest.cs b/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/MySql/Curd/MySqlSelectTest.cs
index 3c3813b2..6fc08172 100644
--- a/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/MySql/Curd/MySqlSelectTest.cs
+++ b/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/MySql/Curd/MySqlSelectTest.cs
@@ -1348,5 +1348,139 @@ namespace FreeSql.Tests.Odbc.MySql
.Where(a => a.Tag.Id == tag1.Id || a.Tag.Id == tag2.Id)
.ToList(true);
}
+
+ public class ToDel1Pk
+ {
+ [Column(IsIdentity = true)]
+ public int id { get; set; }
+ public string name { get; set; }
+ }
+ public class ToDel2Pk
+ {
+ [Column(IsPrimary = true)]
+ public Guid pk1 { get; set; }
+ [Column(IsPrimary = true)]
+ public string pk2 { get; set; }
+ public string name { get; set; }
+ }
+ public class ToDel3Pk
+ {
+ [Column(IsPrimary = true)]
+ public Guid pk1 { get; set; }
+ [Column(IsPrimary = true)]
+ public int pk2 { get; set; }
+ [Column(IsPrimary = true)]
+ public string pk3 { get; set; }
+ public string name { get; set; }
+ }
+ [Fact]
+ public void ToDelete()
+ {
+ g.mysql.Select().ToDelete().ExecuteAffrows();
+ Assert.Equal(0, g.mysql.Select().Count());
+ g.mysql.Insert(new[] {
+ new ToDel1Pk{ name = "name1"},
+ new ToDel1Pk{ name = "name2"},
+ new ToDel1Pk{ name = "nick1"},
+ new ToDel1Pk{ name = "nick2"},
+ new ToDel1Pk{ name = "nick3"}
+ }).ExecuteAffrows();
+ Assert.Equal(2, g.mysql.Select().Where(a => a.name.StartsWith("name")).ToDelete().ExecuteAffrows());
+ Assert.Equal(3, g.mysql.Select().Count());
+ Assert.Equal(3, g.mysql.Select().Where(a => a.name.StartsWith("nick")).Count());
+
+ g.mysql.Select().ToDelete().ExecuteAffrows();
+ Assert.Equal(0, g.mysql.Select().Count());
+ g.mysql.Insert(new[] {
+ new ToDel2Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = "pk2", name = "name1"},
+ new ToDel2Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = "pk2", name = "name2"},
+ new ToDel2Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = "pk2", name = "nick1"},
+ new ToDel2Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = "pk2", name = "nick2"},
+ new ToDel2Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = "pk2", name = "nick3"}
+ }).ExecuteAffrows();
+ Assert.Equal(2, g.mysql.Select().Where(a => a.name.StartsWith("name")).ToDelete().ExecuteAffrows());
+ Assert.Equal(3, g.mysql.Select().Count());
+ Assert.Equal(3, g.mysql.Select().Where(a => a.name.StartsWith("nick")).Count());
+
+ g.mysql.Select().ToDelete().ExecuteAffrows();
+ Assert.Equal(0, g.mysql.Select().Count());
+ g.mysql.Insert(new[] {
+ new ToDel3Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = 1, pk3 = "pk3", name = "name1"},
+ new ToDel3Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = 1, pk3 = "pk3", name = "name2"},
+ new ToDel3Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = 1, pk3 = "pk3", name = "nick1"},
+ new ToDel3Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = 1, pk3 = "pk3", name = "nick2"},
+ new ToDel3Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = 1, pk3 = "pk3", name = "nick3"}
+ }).ExecuteAffrows();
+ Assert.Equal(2, g.mysql.Select().Where(a => a.name.StartsWith("name")).ToDelete().ExecuteAffrows());
+ Assert.Equal(3, g.mysql.Select().Count());
+ Assert.Equal(3, g.mysql.Select().Where(a => a.name.StartsWith("nick")).Count());
+ }
+
+ public class ToUpd1Pk
+ {
+ [Column(IsIdentity = true)]
+ public int id { get; set; }
+ public string name { get; set; }
+ }
+ public class ToUpd2Pk
+ {
+ [Column(IsPrimary = true)]
+ public Guid pk1 { get; set; }
+ [Column(IsPrimary = true)]
+ public string pk2 { get; set; }
+ public string name { get; set; }
+ }
+ public class ToUpd3Pk
+ {
+ [Column(IsPrimary = true)]
+ public Guid pk1 { get; set; }
+ [Column(IsPrimary = true)]
+ public int pk2 { get; set; }
+ [Column(IsPrimary = true)]
+ public string pk3 { get; set; }
+ public string name { get; set; }
+ }
+ [Fact]
+ public void ToUpdate()
+ {
+ g.mysql.Select().ToDelete().ExecuteAffrows();
+ Assert.Equal(0, g.mysql.Select().Count());
+ g.mysql.Insert(new[] {
+ new ToUpd1Pk{ name = "name1"},
+ new ToUpd1Pk{ name = "name2"},
+ new ToUpd1Pk{ name = "nick1"},
+ new ToUpd1Pk{ name = "nick2"},
+ new ToUpd1Pk{ name = "nick3"}
+ }).ExecuteAffrows();
+ Assert.Equal(2, g.mysql.Select().Where(a => a.name.StartsWith("name")).ToUpdate().Set(a => a.name, "nick?").ExecuteAffrows());
+ Assert.Equal(5, g.mysql.Select().Count());
+ Assert.Equal(5, g.mysql.Select().Where(a => a.name.StartsWith("nick")).Count());
+
+ g.mysql.Select().ToDelete().ExecuteAffrows();
+ Assert.Equal(0, g.mysql.Select().Count());
+ g.mysql.Insert(new[] {
+ new ToUpd2Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = "pk2", name = "name1"},
+ new ToUpd2Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = "pk2", name = "name2"},
+ new ToUpd2Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = "pk2", name = "nick1"},
+ new ToUpd2Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = "pk2", name = "nick2"},
+ new ToUpd2Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = "pk2", name = "nick3"}
+ }).ExecuteAffrows();
+ Assert.Equal(2, g.mysql.Select().Where(a => a.name.StartsWith("name")).ToUpdate().Set(a => a.name, "nick?").ExecuteAffrows());
+ Assert.Equal(5, g.mysql.Select().Count());
+ Assert.Equal(5, g.mysql.Select().Where(a => a.name.StartsWith("nick")).Count());
+
+ g.mysql.Select().ToDelete().ExecuteAffrows();
+ Assert.Equal(0, g.mysql.Select().Count());
+ g.mysql.Insert(new[] {
+ new ToUpd3Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = 1, pk3 = "pk3", name = "name1"},
+ new ToUpd3Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = 1, pk3 = "pk3", name = "name2"},
+ new ToUpd3Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = 1, pk3 = "pk3", name = "nick1"},
+ new ToUpd3Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = 1, pk3 = "pk3", name = "nick2"},
+ new ToUpd3Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = 1, pk3 = "pk3", name = "nick3"}
+ }).ExecuteAffrows();
+ Assert.Equal(2, g.mysql.Select().Where(a => a.name.StartsWith("name")).ToUpdate().Set(a => a.name, "nick?").ExecuteAffrows());
+ Assert.Equal(5, g.mysql.Select().Count());
+ Assert.Equal(5, g.mysql.Select().Where(a => a.name.StartsWith("nick")).Count());
+ }
}
}
diff --git a/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/Oracle/Curd/OracleSelectTest.cs b/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/Oracle/Curd/OracleSelectTest.cs
index ac553fd0..9c9a7d8f 100644
--- a/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/Oracle/Curd/OracleSelectTest.cs
+++ b/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/Oracle/Curd/OracleSelectTest.cs
@@ -1232,5 +1232,139 @@ namespace FreeSql.Tests.Odbc.Oracle
.Where(a => a.Tag.Id == tag1.Id || a.Tag.Id == tag2.Id)
.ToList(true);
}
+
+ public class ToDel1Pk
+ {
+ [Column(IsIdentity = true)]
+ public int id { get; set; }
+ public string name { get; set; }
+ }
+ public class ToDel2Pk
+ {
+ [Column(IsPrimary = true)]
+ public Guid pk1 { get; set; }
+ [Column(IsPrimary = true)]
+ public string pk2 { get; set; }
+ public string name { get; set; }
+ }
+ public class ToDel3Pk
+ {
+ [Column(IsPrimary = true)]
+ public Guid pk1 { get; set; }
+ [Column(IsPrimary = true)]
+ public int pk2 { get; set; }
+ [Column(IsPrimary = true)]
+ public string pk3 { get; set; }
+ public string name { get; set; }
+ }
+ [Fact]
+ public void ToDelete()
+ {
+ g.oracle.Select().ToDelete().ExecuteAffrows();
+ Assert.Equal(0, g.oracle.Select().Count());
+ g.oracle.Insert(new[] {
+ new ToDel1Pk{ name = "name1"},
+ new ToDel1Pk{ name = "name2"},
+ new ToDel1Pk{ name = "nick1"},
+ new ToDel1Pk{ name = "nick2"},
+ new ToDel1Pk{ name = "nick3"}
+ }).ExecuteAffrows();
+ Assert.Equal(2, g.oracle.Select().Where(a => a.name.StartsWith("name")).ToDelete().ExecuteAffrows());
+ Assert.Equal(3, g.oracle.Select().Count());
+ Assert.Equal(3, g.oracle.Select().Where(a => a.name.StartsWith("nick")).Count());
+
+ g.oracle.Select().ToDelete().ExecuteAffrows();
+ Assert.Equal(0, g.oracle.Select().Count());
+ g.oracle.Insert(new[] {
+ new ToDel2Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = "pk2", name = "name1"},
+ new ToDel2Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = "pk2", name = "name2"},
+ new ToDel2Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = "pk2", name = "nick1"},
+ new ToDel2Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = "pk2", name = "nick2"},
+ new ToDel2Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = "pk2", name = "nick3"}
+ }).ExecuteAffrows();
+ Assert.Equal(2, g.oracle.Select().Where(a => a.name.StartsWith("name")).ToDelete().ExecuteAffrows());
+ Assert.Equal(3, g.oracle.Select().Count());
+ Assert.Equal(3, g.oracle.Select().Where(a => a.name.StartsWith("nick")).Count());
+
+ g.oracle.Select().ToDelete().ExecuteAffrows();
+ Assert.Equal(0, g.oracle.Select().Count());
+ g.oracle.Insert(new[] {
+ new ToDel3Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = 1, pk3 = "pk3", name = "name1"},
+ new ToDel3Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = 1, pk3 = "pk3", name = "name2"},
+ new ToDel3Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = 1, pk3 = "pk3", name = "nick1"},
+ new ToDel3Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = 1, pk3 = "pk3", name = "nick2"},
+ new ToDel3Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = 1, pk3 = "pk3", name = "nick3"}
+ }).ExecuteAffrows();
+ Assert.Equal(2, g.oracle.Select().Where(a => a.name.StartsWith("name")).ToDelete().ExecuteAffrows());
+ Assert.Equal(3, g.oracle.Select().Count());
+ Assert.Equal(3, g.oracle.Select().Where(a => a.name.StartsWith("nick")).Count());
+ }
+
+ public class ToUpd1Pk
+ {
+ [Column(IsIdentity = true)]
+ public int id { get; set; }
+ public string name { get; set; }
+ }
+ public class ToUpd2Pk
+ {
+ [Column(IsPrimary = true)]
+ public Guid pk1 { get; set; }
+ [Column(IsPrimary = true)]
+ public string pk2 { get; set; }
+ public string name { get; set; }
+ }
+ public class ToUpd3Pk
+ {
+ [Column(IsPrimary = true)]
+ public Guid pk1 { get; set; }
+ [Column(IsPrimary = true)]
+ public int pk2 { get; set; }
+ [Column(IsPrimary = true)]
+ public string pk3 { get; set; }
+ public string name { get; set; }
+ }
+ [Fact]
+ public void ToUpdate()
+ {
+ g.oracle.Select().ToDelete().ExecuteAffrows();
+ Assert.Equal(0, g.oracle.Select().Count());
+ g.oracle.Insert(new[] {
+ new ToUpd1Pk{ name = "name1"},
+ new ToUpd1Pk{ name = "name2"},
+ new ToUpd1Pk{ name = "nick1"},
+ new ToUpd1Pk{ name = "nick2"},
+ new ToUpd1Pk{ name = "nick3"}
+ }).ExecuteAffrows();
+ Assert.Equal(2, g.oracle.Select().Where(a => a.name.StartsWith("name")).ToUpdate().Set(a => a.name, "nick?").ExecuteAffrows());
+ Assert.Equal(5, g.oracle.Select().Count());
+ Assert.Equal(5, g.oracle.Select().Where(a => a.name.StartsWith("nick")).Count());
+
+ g.oracle.Select().ToDelete().ExecuteAffrows();
+ Assert.Equal(0, g.oracle.Select().Count());
+ g.oracle.Insert(new[] {
+ new ToUpd2Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = "pk2", name = "name1"},
+ new ToUpd2Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = "pk2", name = "name2"},
+ new ToUpd2Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = "pk2", name = "nick1"},
+ new ToUpd2Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = "pk2", name = "nick2"},
+ new ToUpd2Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = "pk2", name = "nick3"}
+ }).ExecuteAffrows();
+ Assert.Equal(2, g.oracle.Select().Where(a => a.name.StartsWith("name")).ToUpdate().Set(a => a.name, "nick?").ExecuteAffrows());
+ Assert.Equal(5, g.oracle.Select().Count());
+ Assert.Equal(5, g.oracle.Select().Where(a => a.name.StartsWith("nick")).Count());
+
+ g.oracle.Select().ToDelete().ExecuteAffrows();
+ Assert.Equal(0, g.oracle.Select().Count());
+ g.oracle.Insert(new[] {
+ new ToUpd3Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = 1, pk3 = "pk3", name = "name1"},
+ new ToUpd3Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = 1, pk3 = "pk3", name = "name2"},
+ new ToUpd3Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = 1, pk3 = "pk3", name = "nick1"},
+ new ToUpd3Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = 1, pk3 = "pk3", name = "nick2"},
+ new ToUpd3Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = 1, pk3 = "pk3", name = "nick3"}
+ }).ExecuteAffrows();
+ Assert.Equal(2, g.oracle.Select().Where(a => a.name.StartsWith("name")).ToUpdate().Set(a => a.name, "nick?").ExecuteAffrows());
+ Assert.Equal(5, g.oracle.Select().Count());
+ Assert.Equal(5, g.oracle.Select().Where(a => a.name.StartsWith("nick")).Count());
+ }
}
}
diff --git a/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/PostgreSQL/Curd/PostgreSQLSelectTest.cs b/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/PostgreSQL/Curd/PostgreSQLSelectTest.cs
index 1854ddee..385cdef5 100644
--- a/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/PostgreSQL/Curd/PostgreSQLSelectTest.cs
+++ b/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/PostgreSQL/Curd/PostgreSQLSelectTest.cs
@@ -1306,5 +1306,139 @@ namespace FreeSql.Tests.Odbc.PostgreSQL
.Where(a => a.Tag.Id == tag1.Id || a.Tag.Id == tag2.Id)
.ToList(true);
}
+
+ public class ToDel1Pk
+ {
+ [Column(IsIdentity = true)]
+ public int id { get; set; }
+ public string name { get; set; }
+ }
+ public class ToDel2Pk
+ {
+ [Column(IsPrimary = true)]
+ public Guid pk1 { get; set; }
+ [Column(IsPrimary = true)]
+ public string pk2 { get; set; }
+ public string name { get; set; }
+ }
+ public class ToDel3Pk
+ {
+ [Column(IsPrimary = true)]
+ public Guid pk1 { get; set; }
+ [Column(IsPrimary = true)]
+ public int pk2 { get; set; }
+ [Column(IsPrimary = true)]
+ public string pk3 { get; set; }
+ public string name { get; set; }
+ }
+ [Fact]
+ public void ToDelete()
+ {
+ g.pgsql.Select().ToDelete().ExecuteAffrows();
+ Assert.Equal(0, g.pgsql.Select().Count());
+ g.pgsql.Insert(new[] {
+ new ToDel1Pk{ name = "name1"},
+ new ToDel1Pk{ name = "name2"},
+ new ToDel1Pk{ name = "nick1"},
+ new ToDel1Pk{ name = "nick2"},
+ new ToDel1Pk{ name = "nick3"}
+ }).ExecuteAffrows();
+ Assert.Equal(2, g.pgsql.Select().Where(a => a.name.StartsWith("name")).ToDelete().ExecuteAffrows());
+ Assert.Equal(3, g.pgsql.Select().Count());
+ Assert.Equal(3, g.pgsql.Select().Where(a => a.name.StartsWith("nick")).Count());
+
+ g.pgsql.Select().ToDelete().ExecuteAffrows();
+ Assert.Equal(0, g.pgsql.Select().Count());
+ g.pgsql.Insert(new[] {
+ new ToDel2Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = "pk2", name = "name1"},
+ new ToDel2Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = "pk2", name = "name2"},
+ new ToDel2Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = "pk2", name = "nick1"},
+ new ToDel2Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = "pk2", name = "nick2"},
+ new ToDel2Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = "pk2", name = "nick3"}
+ }).ExecuteAffrows();
+ Assert.Equal(2, g.pgsql.Select().Where(a => a.name.StartsWith("name")).ToDelete().ExecuteAffrows());
+ Assert.Equal(3, g.pgsql.Select().Count());
+ Assert.Equal(3, g.pgsql.Select().Where(a => a.name.StartsWith("nick")).Count());
+
+ g.pgsql.Select().ToDelete().ExecuteAffrows();
+ Assert.Equal(0, g.pgsql.Select().Count());
+ g.pgsql.Insert(new[] {
+ new ToDel3Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = 1, pk3 = "pk3", name = "name1"},
+ new ToDel3Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = 1, pk3 = "pk3", name = "name2"},
+ new ToDel3Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = 1, pk3 = "pk3", name = "nick1"},
+ new ToDel3Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = 1, pk3 = "pk3", name = "nick2"},
+ new ToDel3Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = 1, pk3 = "pk3", name = "nick3"}
+ }).ExecuteAffrows();
+ Assert.Equal(2, g.pgsql.Select().Where(a => a.name.StartsWith("name")).ToDelete().ExecuteAffrows());
+ Assert.Equal(3, g.pgsql.Select().Count());
+ Assert.Equal(3, g.pgsql.Select().Where(a => a.name.StartsWith("nick")).Count());
+ }
+
+ public class ToUpd1Pk
+ {
+ [Column(IsIdentity = true)]
+ public int id { get; set; }
+ public string name { get; set; }
+ }
+ public class ToUpd2Pk
+ {
+ [Column(IsPrimary = true)]
+ public Guid pk1 { get; set; }
+ [Column(IsPrimary = true)]
+ public string pk2 { get; set; }
+ public string name { get; set; }
+ }
+ public class ToUpd3Pk
+ {
+ [Column(IsPrimary = true)]
+ public Guid pk1 { get; set; }
+ [Column(IsPrimary = true)]
+ public int pk2 { get; set; }
+ [Column(IsPrimary = true)]
+ public string pk3 { get; set; }
+ public string name { get; set; }
+ }
+ [Fact]
+ public void ToUpdate()
+ {
+ g.pgsql.Select().ToDelete().ExecuteAffrows();
+ Assert.Equal(0, g.pgsql.Select().Count());
+ g.pgsql.Insert(new[] {
+ new ToUpd1Pk{ name = "name1"},
+ new ToUpd1Pk{ name = "name2"},
+ new ToUpd1Pk{ name = "nick1"},
+ new ToUpd1Pk{ name = "nick2"},
+ new ToUpd1Pk{ name = "nick3"}
+ }).ExecuteAffrows();
+ Assert.Equal(2, g.pgsql.Select().Where(a => a.name.StartsWith("name")).ToUpdate().Set(a => a.name, "nick?").ExecuteAffrows());
+ Assert.Equal(5, g.pgsql.Select().Count());
+ Assert.Equal(5, g.pgsql.Select().Where(a => a.name.StartsWith("nick")).Count());
+
+ g.pgsql.Select().ToDelete().ExecuteAffrows();
+ Assert.Equal(0, g.pgsql.Select().Count());
+ g.pgsql.Insert(new[] {
+ new ToUpd2Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = "pk2", name = "name1"},
+ new ToUpd2Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = "pk2", name = "name2"},
+ new ToUpd2Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = "pk2", name = "nick1"},
+ new ToUpd2Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = "pk2", name = "nick2"},
+ new ToUpd2Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = "pk2", name = "nick3"}
+ }).ExecuteAffrows();
+ Assert.Equal(2, g.pgsql.Select().Where(a => a.name.StartsWith("name")).ToUpdate().Set(a => a.name, "nick?").ExecuteAffrows());
+ Assert.Equal(5, g.pgsql.Select().Count());
+ Assert.Equal(5, g.pgsql.Select().Where(a => a.name.StartsWith("nick")).Count());
+
+ g.pgsql.Select().ToDelete().ExecuteAffrows();
+ Assert.Equal(0, g.pgsql.Select().Count());
+ g.pgsql.Insert(new[] {
+ new ToUpd3Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = 1, pk3 = "pk3", name = "name1"},
+ new ToUpd3Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = 1, pk3 = "pk3", name = "name2"},
+ new ToUpd3Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = 1, pk3 = "pk3", name = "nick1"},
+ new ToUpd3Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = 1, pk3 = "pk3", name = "nick2"},
+ new ToUpd3Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = 1, pk3 = "pk3", name = "nick3"}
+ }).ExecuteAffrows();
+ Assert.Equal(2, g.pgsql.Select().Where(a => a.name.StartsWith("name")).ToUpdate().Set(a => a.name, "nick?").ExecuteAffrows());
+ Assert.Equal(5, g.pgsql.Select().Count());
+ Assert.Equal(5, g.pgsql.Select().Where(a => a.name.StartsWith("nick")).Count());
+ }
}
}
diff --git a/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/SqlServer/Curd/SqlServerSelectTest.cs b/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/SqlServer/Curd/SqlServerSelectTest.cs
index 07051350..80be8d34 100644
--- a/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/SqlServer/Curd/SqlServerSelectTest.cs
+++ b/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/SqlServer/Curd/SqlServerSelectTest.cs
@@ -1220,5 +1220,139 @@ namespace FreeSql.Tests.Odbc.SqlServer
.Where(a => a.Tag.Id == tag1.Id || a.Tag.Id == tag2.Id)
.ToList(true);
}
+
+ public class ToDel1Pk
+ {
+ [Column(IsIdentity = true)]
+ public int id { get; set; }
+ public string name { get; set; }
+ }
+ public class ToDel2Pk
+ {
+ [Column(IsPrimary = true)]
+ public Guid pk1 { get; set; }
+ [Column(IsPrimary = true)]
+ public string pk2 { get; set; }
+ public string name { get; set; }
+ }
+ public class ToDel3Pk
+ {
+ [Column(IsPrimary = true)]
+ public Guid pk1 { get; set; }
+ [Column(IsPrimary = true)]
+ public int pk2 { get; set; }
+ [Column(IsPrimary = true)]
+ public string pk3 { get; set; }
+ public string name { get; set; }
+ }
+ [Fact]
+ public void ToDelete()
+ {
+ g.sqlserver.Select().ToDelete().ExecuteAffrows();
+ Assert.Equal(0, g.sqlserver.Select().Count());
+ g.sqlserver.Insert(new[] {
+ new ToDel1Pk{ name = "name1"},
+ new ToDel1Pk{ name = "name2"},
+ new ToDel1Pk{ name = "nick1"},
+ new ToDel1Pk{ name = "nick2"},
+ new ToDel1Pk{ name = "nick3"}
+ }).ExecuteAffrows();
+ Assert.Equal(2, g.sqlserver.Select().Where(a => a.name.StartsWith("name")).ToDelete().ExecuteAffrows());
+ Assert.Equal(3, g.sqlserver.Select().Count());
+ Assert.Equal(3, g.sqlserver.Select().Where(a => a.name.StartsWith("nick")).Count());
+
+ g.sqlserver.Select().ToDelete().ExecuteAffrows();
+ Assert.Equal(0, g.sqlserver.Select().Count());
+ g.sqlserver.Insert(new[] {
+ new ToDel2Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = "pk2", name = "name1"},
+ new ToDel2Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = "pk2", name = "name2"},
+ new ToDel2Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = "pk2", name = "nick1"},
+ new ToDel2Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = "pk2", name = "nick2"},
+ new ToDel2Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = "pk2", name = "nick3"}
+ }).ExecuteAffrows();
+ Assert.Equal(2, g.sqlserver.Select().Where(a => a.name.StartsWith("name")).ToDelete().ExecuteAffrows());
+ Assert.Equal(3, g.sqlserver.Select().Count());
+ Assert.Equal(3, g.sqlserver.Select().Where(a => a.name.StartsWith("nick")).Count());
+
+ g.sqlserver.Select().ToDelete().ExecuteAffrows();
+ Assert.Equal(0, g.sqlserver.Select().Count());
+ g.sqlserver.Insert(new[] {
+ new ToDel3Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = 1, pk3 = "pk3", name = "name1"},
+ new ToDel3Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = 1, pk3 = "pk3", name = "name2"},
+ new ToDel3Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = 1, pk3 = "pk3", name = "nick1"},
+ new ToDel3Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = 1, pk3 = "pk3", name = "nick2"},
+ new ToDel3Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = 1, pk3 = "pk3", name = "nick3"}
+ }).ExecuteAffrows();
+ Assert.Equal(2, g.sqlserver.Select().Where(a => a.name.StartsWith("name")).ToDelete().ExecuteAffrows());
+ Assert.Equal(3, g.sqlserver.Select().Count());
+ Assert.Equal(3, g.sqlserver.Select().Where(a => a.name.StartsWith("nick")).Count());
+ }
+
+ public class ToUpd1Pk
+ {
+ [Column(IsIdentity = true)]
+ public int id { get; set; }
+ public string name { get; set; }
+ }
+ public class ToUpd2Pk
+ {
+ [Column(IsPrimary = true)]
+ public Guid pk1 { get; set; }
+ [Column(IsPrimary = true)]
+ public string pk2 { get; set; }
+ public string name { get; set; }
+ }
+ public class ToUpd3Pk
+ {
+ [Column(IsPrimary = true)]
+ public Guid pk1 { get; set; }
+ [Column(IsPrimary = true)]
+ public int pk2 { get; set; }
+ [Column(IsPrimary = true)]
+ public string pk3 { get; set; }
+ public string name { get; set; }
+ }
+ [Fact]
+ public void ToUpdate()
+ {
+ g.sqlserver.Select().ToDelete().ExecuteAffrows();
+ Assert.Equal(0, g.sqlserver.Select().Count());
+ g.sqlserver.Insert(new[] {
+ new ToUpd1Pk{ name = "name1"},
+ new ToUpd1Pk{ name = "name2"},
+ new ToUpd1Pk{ name = "nick1"},
+ new ToUpd1Pk{ name = "nick2"},
+ new ToUpd1Pk{ name = "nick3"}
+ }).ExecuteAffrows();
+ Assert.Equal(2, g.sqlserver.Select().Where(a => a.name.StartsWith("name")).ToUpdate().Set(a => a.name, "nick?").ExecuteAffrows());
+ Assert.Equal(5, g.sqlserver.Select().Count());
+ Assert.Equal(5, g.sqlserver.Select().Where(a => a.name.StartsWith("nick")).Count());
+
+ g.sqlserver.Select().ToDelete().ExecuteAffrows();
+ Assert.Equal(0, g.sqlserver.Select().Count());
+ g.sqlserver.Insert(new[] {
+ new ToUpd2Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = "pk2", name = "name1"},
+ new ToUpd2Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = "pk2", name = "name2"},
+ new ToUpd2Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = "pk2", name = "nick1"},
+ new ToUpd2Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = "pk2", name = "nick2"},
+ new ToUpd2Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = "pk2", name = "nick3"}
+ }).ExecuteAffrows();
+ Assert.Equal(2, g.sqlserver.Select().Where(a => a.name.StartsWith("name")).ToUpdate().Set(a => a.name, "nick?").ExecuteAffrows());
+ Assert.Equal(5, g.sqlserver.Select().Count());
+ Assert.Equal(5, g.sqlserver.Select().Where(a => a.name.StartsWith("nick")).Count());
+
+ g.sqlserver.Select().ToDelete().ExecuteAffrows();
+ Assert.Equal(0, g.sqlserver.Select().Count());
+ g.sqlserver.Insert(new[] {
+ new ToUpd3Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = 1, pk3 = "pk3", name = "name1"},
+ new ToUpd3Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = 1, pk3 = "pk3", name = "name2"},
+ new ToUpd3Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = 1, pk3 = "pk3", name = "nick1"},
+ new ToUpd3Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = 1, pk3 = "pk3", name = "nick2"},
+ new ToUpd3Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = 1, pk3 = "pk3", name = "nick3"}
+ }).ExecuteAffrows();
+ Assert.Equal(2, g.sqlserver.Select().Where(a => a.name.StartsWith("name")).ToUpdate().Set(a => a.name, "nick?").ExecuteAffrows());
+ Assert.Equal(5, g.sqlserver.Select().Count());
+ Assert.Equal(5, g.sqlserver.Select().Where(a => a.name.StartsWith("nick")).Count());
+ }
}
}
diff --git a/FreeSql.Tests/FreeSql.Tests/MySql/Curd/MySqlSelectTest.cs b/FreeSql.Tests/FreeSql.Tests/MySql/Curd/MySqlSelectTest.cs
index b98117d7..465996c9 100644
--- a/FreeSql.Tests/FreeSql.Tests/MySql/Curd/MySqlSelectTest.cs
+++ b/FreeSql.Tests/FreeSql.Tests/MySql/Curd/MySqlSelectTest.cs
@@ -1348,5 +1348,139 @@ namespace FreeSql.Tests.MySql
.Where(a => a.Tag.Id == tag1.Id || a.Tag.Id == tag2.Id)
.ToList(true);
}
+
+ public class ToDel1Pk
+ {
+ [Column(IsIdentity = true)]
+ public int id { get; set; }
+ public string name { get; set; }
+ }
+ public class ToDel2Pk
+ {
+ [Column(IsPrimary = true)]
+ public Guid pk1 { get; set; }
+ [Column(IsPrimary = true)]
+ public string pk2 { get; set; }
+ public string name { get; set; }
+ }
+ public class ToDel3Pk
+ {
+ [Column(IsPrimary = true)]
+ public Guid pk1 { get; set; }
+ [Column(IsPrimary = true)]
+ public int pk2 { get; set; }
+ [Column(IsPrimary = true)]
+ public string pk3 { get; set; }
+ public string name { get; set; }
+ }
+ [Fact]
+ public void ToDelete()
+ {
+ g.mysql.Select().ToDelete().ExecuteAffrows();
+ Assert.Equal(0, g.mysql.Select().Count());
+ g.mysql.Insert(new[] {
+ new ToDel1Pk{ name = "name1"},
+ new ToDel1Pk{ name = "name2"},
+ new ToDel1Pk{ name = "nick1"},
+ new ToDel1Pk{ name = "nick2"},
+ new ToDel1Pk{ name = "nick3"}
+ }).ExecuteAffrows();
+ Assert.Equal(2, g.mysql.Select().Where(a => a.name.StartsWith("name")).ToDelete().ExecuteAffrows());
+ Assert.Equal(3, g.mysql.Select().Count());
+ Assert.Equal(3, g.mysql.Select().Where(a => a.name.StartsWith("nick")).Count());
+
+ g.mysql.Select().ToDelete().ExecuteAffrows();
+ Assert.Equal(0, g.mysql.Select().Count());
+ g.mysql.Insert(new[] {
+ new ToDel2Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = "pk2", name = "name1"},
+ new ToDel2Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = "pk2", name = "name2"},
+ new ToDel2Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = "pk2", name = "nick1"},
+ new ToDel2Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = "pk2", name = "nick2"},
+ new ToDel2Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = "pk2", name = "nick3"}
+ }).ExecuteAffrows();
+ Assert.Equal(2, g.mysql.Select().Where(a => a.name.StartsWith("name")).ToDelete().ExecuteAffrows());
+ Assert.Equal(3, g.mysql.Select().Count());
+ Assert.Equal(3, g.mysql.Select().Where(a => a.name.StartsWith("nick")).Count());
+
+ g.mysql.Select().ToDelete().ExecuteAffrows();
+ Assert.Equal(0, g.mysql.Select().Count());
+ g.mysql.Insert(new[] {
+ new ToDel3Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = 1, pk3 = "pk3", name = "name1"},
+ new ToDel3Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = 1, pk3 = "pk3", name = "name2"},
+ new ToDel3Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = 1, pk3 = "pk3", name = "nick1"},
+ new ToDel3Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = 1, pk3 = "pk3", name = "nick2"},
+ new ToDel3Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = 1, pk3 = "pk3", name = "nick3"}
+ }).ExecuteAffrows();
+ Assert.Equal(2, g.mysql.Select().Where(a => a.name.StartsWith("name")).ToDelete().ExecuteAffrows());
+ Assert.Equal(3, g.mysql.Select().Count());
+ Assert.Equal(3, g.mysql.Select().Where(a => a.name.StartsWith("nick")).Count());
+ }
+
+ public class ToUpd1Pk
+ {
+ [Column(IsIdentity = true)]
+ public int id { get; set; }
+ public string name { get; set; }
+ }
+ public class ToUpd2Pk
+ {
+ [Column(IsPrimary = true)]
+ public Guid pk1 { get; set; }
+ [Column(IsPrimary = true)]
+ public string pk2 { get; set; }
+ public string name { get; set; }
+ }
+ public class ToUpd3Pk
+ {
+ [Column(IsPrimary = true)]
+ public Guid pk1 { get; set; }
+ [Column(IsPrimary = true)]
+ public int pk2 { get; set; }
+ [Column(IsPrimary = true)]
+ public string pk3 { get; set; }
+ public string name { get; set; }
+ }
+ [Fact]
+ public void ToUpdate()
+ {
+ g.mysql.Select().ToDelete().ExecuteAffrows();
+ Assert.Equal(0, g.mysql.Select().Count());
+ g.mysql.Insert(new[] {
+ new ToUpd1Pk{ name = "name1"},
+ new ToUpd1Pk{ name = "name2"},
+ new ToUpd1Pk{ name = "nick1"},
+ new ToUpd1Pk{ name = "nick2"},
+ new ToUpd1Pk{ name = "nick3"}
+ }).ExecuteAffrows();
+ Assert.Equal(2, g.mysql.Select().Where(a => a.name.StartsWith("name")).ToUpdate().Set(a => a.name, "nick?").ExecuteAffrows());
+ Assert.Equal(5, g.mysql.Select().Count());
+ Assert.Equal(5, g.mysql.Select().Where(a => a.name.StartsWith("nick")).Count());
+
+ g.mysql.Select().ToDelete().ExecuteAffrows();
+ Assert.Equal(0, g.mysql.Select().Count());
+ g.mysql.Insert(new[] {
+ new ToUpd2Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = "pk2", name = "name1"},
+ new ToUpd2Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = "pk2", name = "name2"},
+ new ToUpd2Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = "pk2", name = "nick1"},
+ new ToUpd2Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = "pk2", name = "nick2"},
+ new ToUpd2Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = "pk2", name = "nick3"}
+ }).ExecuteAffrows();
+ Assert.Equal(2, g.mysql.Select().Where(a => a.name.StartsWith("name")).ToUpdate().Set(a => a.name, "nick?").ExecuteAffrows());
+ Assert.Equal(5, g.mysql.Select().Count());
+ Assert.Equal(5, g.mysql.Select().Where(a => a.name.StartsWith("nick")).Count());
+
+ g.mysql.Select().ToDelete().ExecuteAffrows();
+ Assert.Equal(0, g.mysql.Select().Count());
+ g.mysql.Insert(new[] {
+ new ToUpd3Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = 1, pk3 = "pk3", name = "name1"},
+ new ToUpd3Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = 1, pk3 = "pk3", name = "name2"},
+ new ToUpd3Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = 1, pk3 = "pk3", name = "nick1"},
+ new ToUpd3Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = 1, pk3 = "pk3", name = "nick2"},
+ new ToUpd3Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = 1, pk3 = "pk3", name = "nick3"}
+ }).ExecuteAffrows();
+ Assert.Equal(2, g.mysql.Select().Where(a => a.name.StartsWith("name")).ToUpdate().Set(a => a.name, "nick?").ExecuteAffrows());
+ Assert.Equal(5, g.mysql.Select().Count());
+ Assert.Equal(5, g.mysql.Select().Where(a => a.name.StartsWith("nick")).Count());
+ }
}
}
diff --git a/FreeSql.Tests/FreeSql.Tests/Oracle/Curd/OracleSelectTest.cs b/FreeSql.Tests/FreeSql.Tests/Oracle/Curd/OracleSelectTest.cs
index 137ddcc7..92ecbd0c 100644
--- a/FreeSql.Tests/FreeSql.Tests/Oracle/Curd/OracleSelectTest.cs
+++ b/FreeSql.Tests/FreeSql.Tests/Oracle/Curd/OracleSelectTest.cs
@@ -1232,5 +1232,139 @@ namespace FreeSql.Tests.Oracle
.Where(a => a.Tag.Id == tag1.Id || a.Tag.Id == tag2.Id)
.ToList(true);
}
+
+ public class ToDel1Pk
+ {
+ [Column(IsIdentity = true)]
+ public int id { get; set; }
+ public string name { get; set; }
+ }
+ public class ToDel2Pk
+ {
+ [Column(IsPrimary = true)]
+ public Guid pk1 { get; set; }
+ [Column(IsPrimary = true)]
+ public string pk2 { get; set; }
+ public string name { get; set; }
+ }
+ public class ToDel3Pk
+ {
+ [Column(IsPrimary = true)]
+ public Guid pk1 { get; set; }
+ [Column(IsPrimary = true)]
+ public int pk2 { get; set; }
+ [Column(IsPrimary = true)]
+ public string pk3 { get; set; }
+ public string name { get; set; }
+ }
+ [Fact]
+ public void ToDelete()
+ {
+ g.oracle.Select().ToDelete().ExecuteAffrows();
+ Assert.Equal(0, g.oracle.Select().Count());
+ g.oracle.Insert(new[] {
+ new ToDel1Pk{ name = "name1"},
+ new ToDel1Pk{ name = "name2"},
+ new ToDel1Pk{ name = "nick1"},
+ new ToDel1Pk{ name = "nick2"},
+ new ToDel1Pk{ name = "nick3"}
+ }).ExecuteAffrows();
+ Assert.Equal(2, g.oracle.Select().Where(a => a.name.StartsWith("name")).ToDelete().ExecuteAffrows());
+ Assert.Equal(3, g.oracle.Select().Count());
+ Assert.Equal(3, g.oracle.Select().Where(a => a.name.StartsWith("nick")).Count());
+
+ g.oracle.Select().ToDelete().ExecuteAffrows();
+ Assert.Equal(0, g.oracle.Select().Count());
+ g.oracle.Insert(new[] {
+ new ToDel2Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = "pk2", name = "name1"},
+ new ToDel2Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = "pk2", name = "name2"},
+ new ToDel2Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = "pk2", name = "nick1"},
+ new ToDel2Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = "pk2", name = "nick2"},
+ new ToDel2Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = "pk2", name = "nick3"}
+ }).ExecuteAffrows();
+ Assert.Equal(2, g.oracle.Select().Where(a => a.name.StartsWith("name")).ToDelete().ExecuteAffrows());
+ Assert.Equal(3, g.oracle.Select().Count());
+ Assert.Equal(3, g.oracle.Select().Where(a => a.name.StartsWith("nick")).Count());
+
+ g.oracle.Select().ToDelete().ExecuteAffrows();
+ Assert.Equal(0, g.oracle.Select().Count());
+ g.oracle.Insert(new[] {
+ new ToDel3Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = 1, pk3 = "pk3", name = "name1"},
+ new ToDel3Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = 1, pk3 = "pk3", name = "name2"},
+ new ToDel3Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = 1, pk3 = "pk3", name = "nick1"},
+ new ToDel3Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = 1, pk3 = "pk3", name = "nick2"},
+ new ToDel3Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = 1, pk3 = "pk3", name = "nick3"}
+ }).ExecuteAffrows();
+ Assert.Equal(2, g.oracle.Select().Where(a => a.name.StartsWith("name")).ToDelete().ExecuteAffrows());
+ Assert.Equal(3, g.oracle.Select().Count());
+ Assert.Equal(3, g.oracle.Select().Where(a => a.name.StartsWith("nick")).Count());
+ }
+
+ public class ToUpd1Pk
+ {
+ [Column(IsIdentity = true)]
+ public int id { get; set; }
+ public string name { get; set; }
+ }
+ public class ToUpd2Pk
+ {
+ [Column(IsPrimary = true)]
+ public Guid pk1 { get; set; }
+ [Column(IsPrimary = true)]
+ public string pk2 { get; set; }
+ public string name { get; set; }
+ }
+ public class ToUpd3Pk
+ {
+ [Column(IsPrimary = true)]
+ public Guid pk1 { get; set; }
+ [Column(IsPrimary = true)]
+ public int pk2 { get; set; }
+ [Column(IsPrimary = true)]
+ public string pk3 { get; set; }
+ public string name { get; set; }
+ }
+ [Fact]
+ public void ToUpdate()
+ {
+ g.oracle.Select().ToDelete().ExecuteAffrows();
+ Assert.Equal(0, g.oracle.Select().Count());
+ g.oracle.Insert(new[] {
+ new ToUpd1Pk{ name = "name1"},
+ new ToUpd1Pk{ name = "name2"},
+ new ToUpd1Pk{ name = "nick1"},
+ new ToUpd1Pk{ name = "nick2"},
+ new ToUpd1Pk{ name = "nick3"}
+ }).ExecuteAffrows();
+ Assert.Equal(2, g.oracle.Select().Where(a => a.name.StartsWith("name")).ToUpdate().Set(a => a.name, "nick?").ExecuteAffrows());
+ Assert.Equal(5, g.oracle.Select().Count());
+ Assert.Equal(5, g.oracle.Select().Where(a => a.name.StartsWith("nick")).Count());
+
+ g.oracle.Select().ToDelete().ExecuteAffrows();
+ Assert.Equal(0, g.oracle.Select().Count());
+ g.oracle.Insert(new[] {
+ new ToUpd2Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = "pk2", name = "name1"},
+ new ToUpd2Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = "pk2", name = "name2"},
+ new ToUpd2Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = "pk2", name = "nick1"},
+ new ToUpd2Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = "pk2", name = "nick2"},
+ new ToUpd2Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = "pk2", name = "nick3"}
+ }).ExecuteAffrows();
+ Assert.Equal(2, g.oracle.Select().Where(a => a.name.StartsWith("name")).ToUpdate().Set(a => a.name, "nick?").ExecuteAffrows());
+ Assert.Equal(5, g.oracle.Select().Count());
+ Assert.Equal(5, g.oracle.Select().Where(a => a.name.StartsWith("nick")).Count());
+
+ g.oracle.Select().ToDelete().ExecuteAffrows();
+ Assert.Equal(0, g.oracle.Select().Count());
+ g.oracle.Insert(new[] {
+ new ToUpd3Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = 1, pk3 = "pk3", name = "name1"},
+ new ToUpd3Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = 1, pk3 = "pk3", name = "name2"},
+ new ToUpd3Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = 1, pk3 = "pk3", name = "nick1"},
+ new ToUpd3Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = 1, pk3 = "pk3", name = "nick2"},
+ new ToUpd3Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = 1, pk3 = "pk3", name = "nick3"}
+ }).ExecuteAffrows();
+ Assert.Equal(2, g.oracle.Select().Where(a => a.name.StartsWith("name")).ToUpdate().Set(a => a.name, "nick?").ExecuteAffrows());
+ Assert.Equal(5, g.oracle.Select().Count());
+ Assert.Equal(5, g.oracle.Select().Where(a => a.name.StartsWith("nick")).Count());
+ }
}
}
diff --git a/FreeSql.Tests/FreeSql.Tests/PostgreSQL/Curd/PostgreSQLSelectTest.cs b/FreeSql.Tests/FreeSql.Tests/PostgreSQL/Curd/PostgreSQLSelectTest.cs
index 585e7335..218713f8 100644
--- a/FreeSql.Tests/FreeSql.Tests/PostgreSQL/Curd/PostgreSQLSelectTest.cs
+++ b/FreeSql.Tests/FreeSql.Tests/PostgreSQL/Curd/PostgreSQLSelectTest.cs
@@ -1306,5 +1306,139 @@ namespace FreeSql.Tests.PostgreSQL
.Where(a => a.Tag.Id == tag1.Id || a.Tag.Id == tag2.Id)
.ToList(true);
}
+
+ public class ToDel1Pk
+ {
+ [Column(IsIdentity = true)]
+ public int id { get; set; }
+ public string name { get; set; }
+ }
+ public class ToDel2Pk
+ {
+ [Column(IsPrimary = true)]
+ public Guid pk1 { get; set; }
+ [Column(IsPrimary = true)]
+ public string pk2 { get; set; }
+ public string name { get; set; }
+ }
+ public class ToDel3Pk
+ {
+ [Column(IsPrimary = true)]
+ public Guid pk1 { get; set; }
+ [Column(IsPrimary = true)]
+ public int pk2 { get; set; }
+ [Column(IsPrimary = true)]
+ public string pk3 { get; set; }
+ public string name { get; set; }
+ }
+ [Fact]
+ public void ToDelete()
+ {
+ g.pgsql.Select().ToDelete().ExecuteAffrows();
+ Assert.Equal(0, g.pgsql.Select().Count());
+ g.pgsql.Insert(new[] {
+ new ToDel1Pk{ name = "name1"},
+ new ToDel1Pk{ name = "name2"},
+ new ToDel1Pk{ name = "nick1"},
+ new ToDel1Pk{ name = "nick2"},
+ new ToDel1Pk{ name = "nick3"}
+ }).ExecuteAffrows();
+ Assert.Equal(2, g.pgsql.Select().Where(a => a.name.StartsWith("name")).ToDelete().ExecuteAffrows());
+ Assert.Equal(3, g.pgsql.Select().Count());
+ Assert.Equal(3, g.pgsql.Select().Where(a => a.name.StartsWith("nick")).Count());
+
+ g.pgsql.Select().ToDelete().ExecuteAffrows();
+ Assert.Equal(0, g.pgsql.Select().Count());
+ g.pgsql.Insert(new[] {
+ new ToDel2Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = "pk2", name = "name1"},
+ new ToDel2Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = "pk2", name = "name2"},
+ new ToDel2Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = "pk2", name = "nick1"},
+ new ToDel2Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = "pk2", name = "nick2"},
+ new ToDel2Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = "pk2", name = "nick3"}
+ }).ExecuteAffrows();
+ Assert.Equal(2, g.pgsql.Select().Where(a => a.name.StartsWith("name")).ToDelete().ExecuteAffrows());
+ Assert.Equal(3, g.pgsql.Select().Count());
+ Assert.Equal(3, g.pgsql.Select().Where(a => a.name.StartsWith("nick")).Count());
+
+ g.pgsql.Select().ToDelete().ExecuteAffrows();
+ Assert.Equal(0, g.pgsql.Select().Count());
+ g.pgsql.Insert(new[] {
+ new ToDel3Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = 1, pk3 = "pk3", name = "name1"},
+ new ToDel3Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = 1, pk3 = "pk3", name = "name2"},
+ new ToDel3Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = 1, pk3 = "pk3", name = "nick1"},
+ new ToDel3Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = 1, pk3 = "pk3", name = "nick2"},
+ new ToDel3Pk{ pk1 = FreeUtil.NewMongodbId(), pk2 = 1, pk3 = "pk3", name = "nick3"}
+ }).ExecuteAffrows();
+ Assert.Equal(2, g.pgsql.Select