From 02cd7ad5576386ce142cb49e829e0e4871d0a027 Mon Sep 17 00:00:00 2001
From: 28810 <28810@YEXIANGQIN>
Date: Mon, 24 Feb 2020 18:03:37 +0800
Subject: [PATCH] =?UTF-8?q?-=20=E5=AE=8C=E5=96=84=20IUpdate.SetSource=20?=
=?UTF-8?q?=E7=BB=84=E5=90=88=E4=B8=BB=E9=94=AE=E7=9A=84=E6=95=B0=E6=8D=AE?=
=?UTF-8?q?=E6=9B=B4=E6=96=B0=E5=8D=95=E5=85=83=E6=B5=8B=E8=AF=95=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/MySqlUpdateTest.cs | 13 +
.../Dameng/Curd/DamengUpdateTest.cs | 23 ++
.../Default/Curd/OdbcUpdateTest.cs | 13 +
.../MySql/Curd/MySqlUpdateTest.cs | 13 +
.../Oracle/Curd/OracleUpdateTest.cs | 13 +
.../PostgreSQL/Curd/PostgreSQLUpdateTest.cs | 13 +
.../SqlServer/Curd/SqlServerUpdateTest.cs | 13 +
.../MsAccess/Curd/MsAccessUpdateTest.cs | 23 ++
.../MySql/Curd/MySqlUpdateTest.cs | 13 +
.../Oracle/Curd/OracleUpdateTest.cs | 13 +
.../PostgreSQL/Curd/PostgreSQLUpdateTest.cs | 14 +
.../SqlServer/Curd/SqlServerUpdateTest.cs | 14 +
.../Sqlite/Curd/SqliteUpdateTest.cs | 13 +
FreeSql/FreeSql.xml | 330 +++++++++---------
.../Curd/MsAccessUpdate.cs | 4 +-
.../Curd/MySqlUpdate.cs | 4 +-
.../Dameng/Curd/OdbcDamengUpdate.cs | 4 +-
.../Default/Curd/OdbcUpdate.cs | 4 +-
.../GBase/Curd/OdbcGBaseUpdate.cs | 4 +-
.../MySql/Curd/OdbcMySqlUpdate.cs | 4 +-
.../Oracle/Curd/OdbcOracleUpdate.cs | 4 +-
.../PostgreSQL/Curd/OdbcPostgreSQLUpdate.cs | 4 +-
.../SqlServer/Curd/OdbcSqlServerUpdate.cs | 4 +-
.../Curd/OracleUpdate.cs | 4 +-
.../Curd/PostgreSQLUpdate.cs | 4 +-
.../Curd/SqlServerUpdate.cs | 4 +-
.../Curd/SqliteUpdate.cs | 8 +-
28 files changed, 375 insertions(+), 209 deletions(-)
diff --git a/FreeSql.DbContext/FreeSql.DbContext.xml b/FreeSql.DbContext/FreeSql.DbContext.xml
index d9f91124..dc0203b8 100644
--- a/FreeSql.DbContext/FreeSql.DbContext.xml
+++ b/FreeSql.DbContext/FreeSql.DbContext.xml
@@ -110,13 +110,6 @@
清空状态数据
-
-
- 根据 lambda 条件删除数据
-
-
-
-
添加
diff --git a/FreeSql.Tests/FreeSql.Tests.Provider.MySqlConnector/MySqlConnector/Curd/MySqlUpdateTest.cs b/FreeSql.Tests/FreeSql.Tests.Provider.MySqlConnector/MySqlConnector/Curd/MySqlUpdateTest.cs
index 1a6ad37b..8c22ca85 100644
--- a/FreeSql.Tests/FreeSql.Tests.Provider.MySqlConnector/MySqlConnector/Curd/MySqlUpdateTest.cs
+++ b/FreeSql.Tests/FreeSql.Tests.Provider.MySqlConnector/MySqlConnector/Curd/MySqlUpdateTest.cs
@@ -78,6 +78,19 @@ namespace FreeSql.Tests.MySqlConnector
Assert.Equal("UPDATE `TestEnumUpdateTb` SET `type` = 'sum211', `time` = '0001-01-01 00:00:00.000' WHERE (`id` = 0)", sql);
g.mysql.Update().NoneParameter().SetSource(new TestEnumUpdateTb { id = (int)id, type = TestEnumUpdateTbType.biggit }).ExecuteAffrows();
Assert.Equal(TestEnumUpdateTbType.biggit, g.mysql.Select().Where(a => a.id == id).First()?.type);
+
+ sql = g.mysql.Update().SetSource(new[] {
+ new ts_source_mpk { id1 = 1, id2 = 7, xx = "a1" },
+ new ts_source_mpk { id1 = 1, id2 = 8, xx = "b122" }
+ }).NoneParameter().ToSql().Replace("\r\n", "");
+ }
+ public class ts_source_mpk
+ {
+ [Column(IsPrimary = true)]
+ public int id1 { get; set; }
+ [Column(IsPrimary = true)]
+ public int id2 { get; set; }
+ public string xx { get; set; }
}
[Fact]
public void IgnoreColumns()
diff --git a/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/Dameng/Curd/DamengUpdateTest.cs b/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/Dameng/Curd/DamengUpdateTest.cs
index 51a139c0..1c5c437d 100644
--- a/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/Dameng/Curd/DamengUpdateTest.cs
+++ b/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/Dameng/Curd/DamengUpdateTest.cs
@@ -48,6 +48,29 @@ namespace FreeSql.Tests.Odbc.Dameng
sql = update.SetSource(items).Set(a => a.CreateTime, new DateTime(2020, 1, 1)).ToSql().Replace("\r\n", "");
Assert.Equal("UPDATE \"TB_TOPIC\" SET \"CREATETIME\" = to_timestamp('2020-01-01 00:00:00.000000','YYYY-MM-DD HH24:MI:SS.FF6') WHERE (\"ID\" IN (1,2,3,4,5,6,7,8,9,10))", sql);
+
+ if (g.dameng.Select().Where(a => a.id1 == 1 && a.id2 == 7).Any() == false)
+ g.dameng.Insert(new ts_source_mpk { id1 = 1, id2 = 7 }).ExecuteAffrows();
+ if (g.dameng.Select().Where(a => a.id1 == 1 && a.id2 == 8).Any() == false)
+ g.dameng.Insert(new ts_source_mpk { id1 = 1, id2 = 8 }).ExecuteAffrows();
+
+ sql = g.dameng.Update().SetSource(new[] {
+ new ts_source_mpk { id1 = 1, id2 = 7, xx = "a1" },
+ new ts_source_mpk { id1 = 1, id2 = 8, xx = "b122" }
+ }).NoneParameter().ToSql().Replace("\r\n", "");
+ g.dameng.Update().SetSource(new[] {
+ new ts_source_mpk { id1 = 1, id2 = 7, xx = "a1" },
+ new ts_source_mpk { id1 = 1, id2 = 8, xx = "b122" }
+ }).NoneParameter().ExecuteAffrows();
+ var testlist = g.dameng.Select().ToList();
+ }
+ public class ts_source_mpk
+ {
+ [Column(IsPrimary = true)]
+ public int id1 { get; set; }
+ [Column(IsPrimary = true)]
+ public int id2 { get; set; }
+ public string xx { get; set; }
}
[Fact]
public void IgnoreColumns()
diff --git a/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/Default/Curd/OdbcUpdateTest.cs b/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/Default/Curd/OdbcUpdateTest.cs
index 3b2fe87d..7adec224 100644
--- a/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/Default/Curd/OdbcUpdateTest.cs
+++ b/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/Default/Curd/OdbcUpdateTest.cs
@@ -50,6 +50,19 @@ namespace FreeSql.Tests.Odbc.Default
sql = update.SetSource(items).IgnoreColumns(a => a.TypeGuid).Set(a => a.CreateTime, new DateTime(2020, 1, 1)).ToSql().Replace("\r\n", "");
Assert.Equal("UPDATE [tb_topic] SET [CreateTime] = '2020-01-01 00:00:00' WHERE ([Id] IN (1,2,3,4,5,6,7,8,9,10))", sql);
+
+ sql = g.odbc.Update().SetSource(new[] {
+ new ts_source_mpk { id1 = 1, id2 = 7, xx = "a1" },
+ new ts_source_mpk { id1 = 1, id2 = 8, xx = "b122" }
+ }).NoneParameter().ToSql().Replace("\r\n", "");
+ }
+ public class ts_source_mpk
+ {
+ [Column(IsPrimary = true)]
+ public int id1 { get; set; }
+ [Column(IsPrimary = true)]
+ public int id2 { get; set; }
+ public string xx { get; set; }
}
[Fact]
public void IgnoreColumns()
diff --git a/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/MySql/Curd/MySqlUpdateTest.cs b/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/MySql/Curd/MySqlUpdateTest.cs
index d0497e2d..a187cf59 100644
--- a/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/MySql/Curd/MySqlUpdateTest.cs
+++ b/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/MySql/Curd/MySqlUpdateTest.cs
@@ -78,6 +78,19 @@ namespace FreeSql.Tests.Odbc.MySql
Assert.Equal("UPDATE `TestEnumUpdateTb` SET `type` = 'sum211', `time` = '0001-01-01 00:00:00.000' WHERE (`id` = 0)", sql);
g.mysql.Update().NoneParameter().SetSource(new TestEnumUpdateTb { id = (int)id, type = TestEnumUpdateTbType.biggit }).ExecuteAffrows();
Assert.Equal(TestEnumUpdateTbType.biggit, g.mysql.Select().Where(a => a.id == id).First()?.type);
+
+ sql = g.mysql.Update().SetSource(new[] {
+ new ts_source_mpk { id1 = 1, id2 = 7, xx = "a1" },
+ new ts_source_mpk { id1 = 1, id2 = 8, xx = "b122" }
+ }).NoneParameter().ToSql().Replace("\r\n", "");
+ }
+ public class ts_source_mpk
+ {
+ [Column(IsPrimary = true)]
+ public int id1 { get; set; }
+ [Column(IsPrimary = true)]
+ public int id2 { get; set; }
+ public string xx { get; set; }
}
[Fact]
public void IgnoreColumns()
diff --git a/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/Oracle/Curd/OracleUpdateTest.cs b/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/Oracle/Curd/OracleUpdateTest.cs
index aef3d5bc..5882a1e5 100644
--- a/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/Oracle/Curd/OracleUpdateTest.cs
+++ b/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/Oracle/Curd/OracleUpdateTest.cs
@@ -48,6 +48,19 @@ namespace FreeSql.Tests.Odbc.Oracle
sql = update.SetSource(items).Set(a => a.CreateTime, new DateTime(2020, 1, 1)).ToSql().Replace("\r\n", "");
Assert.Equal("UPDATE \"TB_TOPIC\" SET \"CREATETIME\" = to_timestamp('2020-01-01 00:00:00.000000','YYYY-MM-DD HH24:MI:SS.FF6') WHERE (\"ID\" IN (1,2,3,4,5,6,7,8,9,10))", sql);
+
+ sql = g.oracle.Update().SetSource(new[] {
+ new ts_source_mpk { id1 = 1, id2 = 7, xx = "a1" },
+ new ts_source_mpk { id1 = 1, id2 = 8, xx = "b122" }
+ }).NoneParameter().ToSql().Replace("\r\n", "");
+ }
+ public class ts_source_mpk
+ {
+ [Column(IsPrimary = true)]
+ public int id1 { get; set; }
+ [Column(IsPrimary = true)]
+ public int id2 { get; set; }
+ public string xx { get; set; }
}
[Fact]
public void IgnoreColumns()
diff --git a/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/PostgreSQL/Curd/PostgreSQLUpdateTest.cs b/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/PostgreSQL/Curd/PostgreSQLUpdateTest.cs
index 9324d935..ecc43d80 100644
--- a/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/PostgreSQL/Curd/PostgreSQLUpdateTest.cs
+++ b/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/PostgreSQL/Curd/PostgreSQLUpdateTest.cs
@@ -49,6 +49,19 @@ namespace FreeSql.Tests.Odbc.PostgreSQL
sql = update.SetSource(items).Set(a => a.CreateTime, new DateTime(2020, 1, 1)).ToSql().Replace("\r\n", "");
Assert.Equal("UPDATE \"tb_topic\" SET \"createtime\" = '2020-01-01 00:00:00.000000' WHERE (\"id\" IN (1,2,3,4,5,6,7,8,9,10))", sql);
+
+ sql = g.pgsql.Update().SetSource(new[] {
+ new ts_source_mpk { id1 = 1, id2 = 7, xx = "a1" },
+ new ts_source_mpk { id1 = 1, id2 = 8, xx = "b122" }
+ }).NoneParameter().ToSql().Replace("\r\n", "");
+ }
+ public class ts_source_mpk
+ {
+ [Column(IsPrimary = true)]
+ public int id1 { get; set; }
+ [Column(IsPrimary = true)]
+ public int id2 { get; set; }
+ public string xx { get; set; }
}
[Fact]
public void IgnoreColumns()
diff --git a/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/SqlServer/Curd/SqlServerUpdateTest.cs b/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/SqlServer/Curd/SqlServerUpdateTest.cs
index 5e2e504e..99b73c02 100644
--- a/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/SqlServer/Curd/SqlServerUpdateTest.cs
+++ b/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/SqlServer/Curd/SqlServerUpdateTest.cs
@@ -51,6 +51,19 @@ namespace FreeSql.Tests.Odbc.SqlServer
sql = update.SetSource(items).IgnoreColumns(a => a.TypeGuid).Set(a => a.CreateTime, new DateTime(2020, 1, 1)).ToSql().Replace("\r\n", "");
Assert.Equal("UPDATE [tb_topic] SET [CreateTime] = '2020-01-01 00:00:00.000' WHERE ([Id] IN (1,2,3,4,5,6,7,8,9,10))", sql);
+
+ sql = g.sqlserver.Update().SetSource(new[] {
+ new ts_source_mpk { id1 = 1, id2 = 7, xx = "a1" },
+ new ts_source_mpk { id1 = 1, id2 = 8, xx = "b122" }
+ }).NoneParameter().ToSql().Replace("\r\n", "");
+ }
+ public class ts_source_mpk
+ {
+ [Column(IsPrimary = true)]
+ public int id1 { get; set; }
+ [Column(IsPrimary = true)]
+ public int id2 { get; set; }
+ public string xx { get; set; }
}
[Fact]
public void IgnoreColumns()
diff --git a/FreeSql.Tests/FreeSql.Tests/MsAccess/Curd/MsAccessUpdateTest.cs b/FreeSql.Tests/FreeSql.Tests/MsAccess/Curd/MsAccessUpdateTest.cs
index 2e148df4..76c44fbc 100644
--- a/FreeSql.Tests/FreeSql.Tests/MsAccess/Curd/MsAccessUpdateTest.cs
+++ b/FreeSql.Tests/FreeSql.Tests/MsAccess/Curd/MsAccessUpdateTest.cs
@@ -50,6 +50,29 @@ namespace FreeSql.Tests.MsAccess
sql = update.SetSource(items).IgnoreColumns(a => a.TypeGuid).Set(a => a.CreateTime, new DateTime(2020, 1, 1)).ToSql().Replace("\r\n", "");
Assert.Equal("UPDATE [tb_topic] SET [CreateTime] = '2020-01-01 00:00:00' WHERE ([Id] IN (1,2,3,4,5,6,7,8,9,10))", sql);
+
+ if (g.msaccess.Select().Where(a => a.id1 == 1 && a.id2 == 7).Any() == false)
+ g.msaccess.Insert(new ts_source_mpk { id1 = 1, id2 = 7 }).ExecuteAffrows();
+ if (g.msaccess.Select().Where(a => a.id1 == 1 && a.id2 == 8).Any() == false)
+ g.msaccess.Insert(new ts_source_mpk { id1 = 1, id2 = 8 }).ExecuteAffrows();
+
+ sql = g.msaccess.Update().SetSource(new[] {
+ new ts_source_mpk { id1 = 1, id2 = 7, xx = "a1" },
+ new ts_source_mpk { id1 = 1, id2 = 8, xx = "b122" }
+ }).NoneParameter().ToSql().Replace("\r\n", "");
+ g.msaccess.Update().SetSource(new[] {
+ new ts_source_mpk { id1 = 1, id2 = 7, xx = "a1" },
+ new ts_source_mpk { id1 = 1, id2 = 8, xx = "b122" }
+ }).NoneParameter().ExecuteAffrows();
+ var testlist = g.msaccess.Select().ToList();
+ }
+ public class ts_source_mpk
+ {
+ [Column(IsPrimary = true)]
+ public int id1 { get; set; }
+ [Column(IsPrimary = true)]
+ public int id2 { get; set; }
+ public string xx { get; set; }
}
[Fact]
public void IgnoreColumns()
diff --git a/FreeSql.Tests/FreeSql.Tests/MySql/Curd/MySqlUpdateTest.cs b/FreeSql.Tests/FreeSql.Tests/MySql/Curd/MySqlUpdateTest.cs
index 95aae673..4f8cbe00 100644
--- a/FreeSql.Tests/FreeSql.Tests/MySql/Curd/MySqlUpdateTest.cs
+++ b/FreeSql.Tests/FreeSql.Tests/MySql/Curd/MySqlUpdateTest.cs
@@ -79,6 +79,19 @@ namespace FreeSql.Tests.MySql
Assert.Equal("UPDATE `TestEnumUpdateTb` SET `type` = 'sum211', `time` = '0001-01-01 00:00:00.000' WHERE (`id` = 0)", sql);
g.mysql.Update().NoneParameter().SetSource(new TestEnumUpdateTb { id = (int)id, type = TestEnumUpdateTbType.biggit }).ExecuteAffrows();
Assert.Equal(TestEnumUpdateTbType.biggit, g.mysql.Select().Where(a => a.id == id).First()?.type);
+
+ sql = g.mysql.Update().SetSource(new[] {
+ new ts_source_mpk { id1 = 1, id2 = 7, xx = "a1" },
+ new ts_source_mpk { id1 = 1, id2 = 8, xx = "b122" }
+ }).NoneParameter().ToSql().Replace("\r\n", "");
+ }
+ public class ts_source_mpk
+ {
+ [Column(IsPrimary = true)]
+ public int id1 { get; set; }
+ [Column(IsPrimary = true)]
+ public int id2 { get; set; }
+ public string xx { get; set; }
}
[Fact]
public void IgnoreColumns()
diff --git a/FreeSql.Tests/FreeSql.Tests/Oracle/Curd/OracleUpdateTest.cs b/FreeSql.Tests/FreeSql.Tests/Oracle/Curd/OracleUpdateTest.cs
index 0df27fb9..b3413337 100644
--- a/FreeSql.Tests/FreeSql.Tests/Oracle/Curd/OracleUpdateTest.cs
+++ b/FreeSql.Tests/FreeSql.Tests/Oracle/Curd/OracleUpdateTest.cs
@@ -48,6 +48,19 @@ namespace FreeSql.Tests.Oracle
sql = update.SetSource(items).Set(a => a.CreateTime, new DateTime(2020, 1, 1)).ToSql().Replace("\r\n", "");
Assert.Equal("UPDATE \"TB_TOPIC\" SET \"CREATETIME\" = :p_0 WHERE (\"ID\" IN (1,2,3,4,5,6,7,8,9,10))", sql);
+
+ sql = g.oracle.Update().SetSource(new[] {
+ new ts_source_mpk { id1 = 1, id2 = 7, xx = "a1" },
+ new ts_source_mpk { id1 = 1, id2 = 8, xx = "b122" }
+ }).NoneParameter().ToSql().Replace("\r\n", "");
+ }
+ public class ts_source_mpk
+ {
+ [Column(IsPrimary = true)]
+ public int id1 { get; set; }
+ [Column(IsPrimary = true)]
+ public int id2 { get; set; }
+ public string xx { get; set; }
}
[Fact]
public void IgnoreColumns()
diff --git a/FreeSql.Tests/FreeSql.Tests/PostgreSQL/Curd/PostgreSQLUpdateTest.cs b/FreeSql.Tests/FreeSql.Tests/PostgreSQL/Curd/PostgreSQLUpdateTest.cs
index d13cd12c..1eabd7f3 100644
--- a/FreeSql.Tests/FreeSql.Tests/PostgreSQL/Curd/PostgreSQLUpdateTest.cs
+++ b/FreeSql.Tests/FreeSql.Tests/PostgreSQL/Curd/PostgreSQLUpdateTest.cs
@@ -49,7 +49,21 @@ namespace FreeSql.Tests.PostgreSQL
sql = update.SetSource(items).Set(a => a.CreateTime, new DateTime(2020, 1, 1)).ToSql().Replace("\r\n", "");
Assert.Equal("UPDATE \"tb_topic\" SET \"createtime\" = @p_0 WHERE (\"id\" IN (1,2,3,4,5,6,7,8,9,10))", sql);
+
+ sql = g.pgsql.Update().SetSource(new[] {
+ new ts_source_mpk { id1 = 1, id2 = 7, xx = "a1" },
+ new ts_source_mpk { id1 = 1, id2 = 8, xx = "b122" }
+ }).NoneParameter().ToSql().Replace("\r\n", "");
}
+ public class ts_source_mpk
+ {
+ [Column(IsPrimary = true)]
+ public int id1 { get; set; }
+ [Column(IsPrimary = true)]
+ public int id2 { get; set; }
+ public string xx { get; set; }
+ }
+
[Fact]
public void IgnoreColumns()
{
diff --git a/FreeSql.Tests/FreeSql.Tests/SqlServer/Curd/SqlServerUpdateTest.cs b/FreeSql.Tests/FreeSql.Tests/SqlServer/Curd/SqlServerUpdateTest.cs
index 4528a7ee..9dd1dea6 100644
--- a/FreeSql.Tests/FreeSql.Tests/SqlServer/Curd/SqlServerUpdateTest.cs
+++ b/FreeSql.Tests/FreeSql.Tests/SqlServer/Curd/SqlServerUpdateTest.cs
@@ -60,7 +60,21 @@ namespace FreeSql.Tests.SqlServer
sql = update.SetSource(items).IgnoreColumns(a => a.TypeGuid).Set(a => a.CreateTime, new DateTime(2020, 1, 1)).ToSql().Replace("\r\n", "");
Assert.Equal("UPDATE [tb_topic] SET [CreateTime] = @p_0 WHERE ([Id] IN (1,2,3,4,5,6,7,8,9,10))", sql);
+
+ sql = g.sqlserver.Update().SetSource(new[] {
+ new ts_source_mpk { id1 = 1, id2 = 7, xx = "a1" },
+ new ts_source_mpk { id1 = 1, id2 = 8, xx = "b122" }
+ }).NoneParameter().ToSql().Replace("\r\n", "");
}
+ public class ts_source_mpk
+ {
+ [Column(IsPrimary = true)]
+ public int id1 { get; set; }
+ [Column(IsPrimary = true)]
+ public int id2 { get; set; }
+ public string xx { get; set; }
+ }
+
[Fact]
public void IgnoreColumns()
{
diff --git a/FreeSql.Tests/FreeSql.Tests/Sqlite/Curd/SqliteUpdateTest.cs b/FreeSql.Tests/FreeSql.Tests/Sqlite/Curd/SqliteUpdateTest.cs
index d77cac96..fe4532a7 100644
--- a/FreeSql.Tests/FreeSql.Tests/Sqlite/Curd/SqliteUpdateTest.cs
+++ b/FreeSql.Tests/FreeSql.Tests/Sqlite/Curd/SqliteUpdateTest.cs
@@ -50,6 +50,19 @@ namespace FreeSql.Tests.Sqlite
sql = update.SetSource(items).IgnoreColumns(a => a.TypeGuid).Set(a => a.CreateTime, new DateTime(2020, 1, 1)).ToSql().Replace("\r\n", "");
Assert.Equal("UPDATE \"tb_topic\" SET \"CreateTime\" = @p_0 WHERE (\"Id\" IN (1,2,3,4,5,6,7,8,9,10))", sql);
+
+ sql = g.sqlite.Update().SetSource(new[] {
+ new ts_source_mpk { id1 = 1, id2 = 7, xx = "a1" },
+ new ts_source_mpk { id1 = 1, id2 = 8, xx = "b122" }
+ }).NoneParameter().ToSql().Replace("\r\n", "");
+ }
+ public class ts_source_mpk
+ {
+ [Column(IsPrimary = true)]
+ public int id1 { get; set; }
+ [Column(IsPrimary = true)]
+ public int id2 { get; set; }
+ public string xx { get; set; }
}
[Fact]
public void IgnoreColumns()
diff --git a/FreeSql/FreeSql.xml b/FreeSql/FreeSql.xml
index 21df8587..66b08dae 100644
--- a/FreeSql/FreeSql.xml
+++ b/FreeSql/FreeSql.xml
@@ -2426,180 +2426,7 @@
-
- Insert/Update自动值处理
-
-
-
-
- 内置解析功能,可辅助您进行解析
-
-
-
-
- 需要您解析的表达式
-
-
-
-
- 解析后的内容
-
-
-
-
- 实体类型
-
-
-
-
- 实体配置
-
-
-
-
- 索引配置
-
-
-
-
- 实体类型
-
-
-
-
- 实体的属性
-
-
-
-
- 实体的属性配置
-
-
-
-
- 标识符,可将 CurdBefore 与 CurdAfter 进行匹配
-
-
-
-
- 操作类型
-
-
-
-
- 实体类型
-
-
-
-
- 实体类型的元数据
-
-
-
-
- 执行的 SQL
-
-
-
-
- 参数化命令
-
-
-
-
- 发生的错误
-
-
-
-
- 执行SQL命令,返回的结果
-
-
-
-
- 耗时(单位:Ticks)
-
-
-
-
- 耗时(单位:毫秒)
-
-
-
-
- 标识符,可将 SyncStructureBeforeEventArgs 与 SyncStructureAfterEventArgs 进行匹配
-
-
-
-
- 实体类型
-
-
-
-
- 执行的 SQL
-
-
-
-
- 发生的错误
-
-
-
-
- 耗时(单位:Ticks)
-
-
-
-
- 耗时(单位:毫秒)
-
-
-
-
- 类型
-
-
-
-
- 属性列的元数据
-
-
-
-
- 反射的属性信息
-
-
-
-
- 获取实体的属性值,也可以设置实体的属性新值
-
-
-
-
- 【开发环境必备】自动同步实体结构到数据库,程序运行中检查实体表是否存在,然后创建或修改
-
-
-
-
- 转小写同步结构
-
-
-
-
- 转大写同步结构
-
-
-
-
- 将数据库的主键、自增、索引设置导入,适用 DbFirst 模式,无须在实体类型上设置 [Column(IsPrimary)] 或者 ConfigEntity。此功能目前可用于 mysql/sqlserver/postgresql/oracle。
- 本功能会影响 IFreeSql 首次访问的速度。
- 若使用 CodeFirst 创建索引后,又直接在数据库上建了索引,若无本功能下一次 CodeFirst 迁移时数据库上创建的索引将被删除
-
-
-
-
- 不使用命令参数化执行,针对 Insert/Update
+
@@ -2874,6 +2701,161 @@
+
+
+ C#:从元组集合中查找 exp1, exp2 是否存在
+ SQL:
+ exp1 = that[0].Item1 and exp2 = that[0].Item2 OR
+ exp1 = that[1].Item1 and exp2 = that[1].Item2 OR
+ ...
+ 注意:当 that 为 null 或 empty 时,返回 1=0
+
+
+
+
+
+
+ 获取c#类型,int、long
+
+
+
+
+
+
+ 获取c#类型对象
+
+
+
+
+
+
+ 获取ado.net读取方法, GetBoolean、GetInt64
+
+
+
+
+
+
+ 序列化
+
+
+
+
+
+
+ 反序列化
+
+
+
+
+
+
+ 获取数据库枚举类型,适用 PostgreSQL
+
+
+
+
+
+
+ AsType, Ctor, ClearData 三处地方需要重新加载
+
+
+
+
+ AsType, Ctor, ClearData 三处地方需要重新加载
+
+
+
+
+ 通过属性的注释文本,通过 xml 读取
+
+
+ Dict:key=属性名,value=注释
+
+
+
+ 创建一个过滤器
+
+
+ 名字
+ 表达式
+
+
+
+
+ 中间表,多对多
+
+
+
+
+ 不进行任何处理
+
+
+
+
+ 将帕斯卡命名字符串转换为下划线分隔字符串
+
+ BigApple -> Big_Apple
+
+
+
+
+ 将帕斯卡命名字符串转换为下划线分隔字符串,且转换为全大写
+
+ BigApple -> BIG_APPLE
+
+
+
+
+ 将帕斯卡命名字符串转换为下划线分隔字符串,且转换为全小写
+
+ BigApple -> big_apple
+
+
+
+
+ 将字符串转换为大写
+
+ BigApple -> BIGAPPLE
+
+
+
+
+ 将字符串转换为小写
+
+ BigApple -> bigapple
+
+
+
+
+ 将帕斯卡命名字符串转换为下划线分隔字符串
+
+ BigApple -> Big_Apple
+
+
+
+
+
+
+ C#: that >= between && that <= and
+ SQL: that BETWEEN between AND and
+
+
+
+
+
+
+
+
+ 注意:这个方法和 Between 有细微区别
+ C#: that >= start && that < end
+ SQL: that >= start and that < end
+
+
+
+
+
+
C#:从元组集合中查找 exp1, exp2 是否存在
diff --git a/Providers/FreeSql.Provider.MsAccess/Curd/MsAccessUpdate.cs b/Providers/FreeSql.Provider.MsAccess/Curd/MsAccessUpdate.cs
index f54c9077..6a70a096 100644
--- a/Providers/FreeSql.Provider.MsAccess/Curd/MsAccessUpdate.cs
+++ b/Providers/FreeSql.Provider.MsAccess/Curd/MsAccessUpdate.cs
@@ -43,7 +43,7 @@ namespace FreeSql.MsAccess.Curd
var pkidx = 0;
foreach (var pk in _table.Primarys)
{
- if (pkidx > 0) caseWhen.Append(", ");
+ if (pkidx > 0) caseWhen.Append(" + '+' + ");
caseWhen.Append(MsAccessUtils.GetCastSql(_commonUtils.QuoteReadColumn(pk.CsType, pk.Attribute.MapType, _commonUtils.QuoteSqlName(pk.Attribute.Name)), typeof(string)));
++pkidx;
}
@@ -60,7 +60,7 @@ namespace FreeSql.MsAccess.Curd
var pkidx = 0;
foreach (var pk in _table.Primarys)
{
- if (pkidx > 0) sb.Append(", ");
+ if (pkidx > 0) sb.Append(" + '+' + ");
sb.Append(MsAccessUtils.GetCastSql(_commonUtils.FormatSql("{0}", pk.GetMapValue(d)), typeof(string)));
++pkidx;
}
diff --git a/Providers/FreeSql.Provider.MySql/Curd/MySqlUpdate.cs b/Providers/FreeSql.Provider.MySql/Curd/MySqlUpdate.cs
index f2e29d2d..b208affd 100644
--- a/Providers/FreeSql.Provider.MySql/Curd/MySqlUpdate.cs
+++ b/Providers/FreeSql.Provider.MySql/Curd/MySqlUpdate.cs
@@ -79,7 +79,7 @@ namespace FreeSql.MySql.Curd
var pkidx = 0;
foreach (var pk in _table.Primarys)
{
- if (pkidx > 0) caseWhen.Append(", ");
+ if (pkidx > 0) caseWhen.Append(", '+', ");
caseWhen.Append(_commonUtils.QuoteReadColumn(pk.CsType, pk.Attribute.MapType, _commonUtils.QuoteSqlName(pk.Attribute.Name)));
++pkidx;
}
@@ -97,7 +97,7 @@ namespace FreeSql.MySql.Curd
var pkidx = 0;
foreach (var pk in _table.Primarys)
{
- if (pkidx > 0) sb.Append(", ");
+ if (pkidx > 0) sb.Append(", '+', ");
sb.Append(_commonUtils.FormatSql("{0}", pk.GetMapValue(d)));
++pkidx;
}
diff --git a/Providers/FreeSql.Provider.Odbc/Dameng/Curd/OdbcDamengUpdate.cs b/Providers/FreeSql.Provider.Odbc/Dameng/Curd/OdbcDamengUpdate.cs
index 2b274bf4..22aa2504 100644
--- a/Providers/FreeSql.Provider.Odbc/Dameng/Curd/OdbcDamengUpdate.cs
+++ b/Providers/FreeSql.Provider.Odbc/Dameng/Curd/OdbcDamengUpdate.cs
@@ -39,7 +39,7 @@ namespace FreeSql.Odbc.Dameng
var pkidx = 0;
foreach (var pk in _table.Primarys)
{
- if (pkidx > 0) caseWhen.Append(" || ");
+ if (pkidx > 0) caseWhen.Append(" || '+' || ");
caseWhen.Append(_commonUtils.QuoteReadColumn(pk.CsType, pk.Attribute.MapType, _commonUtils.QuoteSqlName(pk.Attribute.Name)));
++pkidx;
}
@@ -57,7 +57,7 @@ namespace FreeSql.Odbc.Dameng
var pkidx = 0;
foreach (var pk in _table.Primarys)
{
- if (pkidx > 0) sb.Append(" || ");
+ if (pkidx > 0) sb.Append(" || '+' || ");
sb.Append(_commonUtils.FormatSql("{0}", pk.GetMapValue(d)));
++pkidx;
}
diff --git a/Providers/FreeSql.Provider.Odbc/Default/Curd/OdbcUpdate.cs b/Providers/FreeSql.Provider.Odbc/Default/Curd/OdbcUpdate.cs
index c13928d9..b24bb642 100644
--- a/Providers/FreeSql.Provider.Odbc/Default/Curd/OdbcUpdate.cs
+++ b/Providers/FreeSql.Provider.Odbc/Default/Curd/OdbcUpdate.cs
@@ -36,7 +36,7 @@ namespace FreeSql.Odbc.Default
var pkidx = 0;
foreach (var pk in _table.Primarys)
{
- if (pkidx > 0) caseWhen.Append(", ");
+ if (pkidx > 0) caseWhen.Append(" + '+' + ");
caseWhen.Append(_utils.Adapter.CastSql(_commonUtils.QuoteReadColumn(pk.CsType, pk.Attribute.MapType, _commonUtils.QuoteSqlName(pk.Attribute.Name)), _utils.Adapter.MappingOdbcTypeVarChar));
++pkidx;
}
@@ -53,7 +53,7 @@ namespace FreeSql.Odbc.Default
var pkidx = 0;
foreach (var pk in _table.Primarys)
{
- if (pkidx > 0) sb.Append(", ");
+ if (pkidx > 0) sb.Append(" + '+' + ");
sb.Append(_utils.Adapter.CastSql(_commonUtils.FormatSql("{0}", pk.GetMapValue(d)), _utils.Adapter.MappingOdbcTypeVarChar));
++pkidx;
}
diff --git a/Providers/FreeSql.Provider.Odbc/GBase/Curd/OdbcGBaseUpdate.cs b/Providers/FreeSql.Provider.Odbc/GBase/Curd/OdbcGBaseUpdate.cs
index e2495d19..2701cfcb 100644
--- a/Providers/FreeSql.Provider.Odbc/GBase/Curd/OdbcGBaseUpdate.cs
+++ b/Providers/FreeSql.Provider.Odbc/GBase/Curd/OdbcGBaseUpdate.cs
@@ -38,7 +38,7 @@ namespace FreeSql.Odbc.GBase
var pkidx = 0;
foreach (var pk in _table.Primarys)
{
- if (pkidx > 0) caseWhen.Append(" || ");
+ if (pkidx > 0) caseWhen.Append(" || '+' || ");
caseWhen.Append(_commonUtils.QuoteReadColumn(pk.CsType, pk.Attribute.MapType, _commonUtils.QuoteSqlName(pk.Attribute.Name))).Append("::varchar");
++pkidx;
}
@@ -56,7 +56,7 @@ namespace FreeSql.Odbc.GBase
var pkidx = 0;
foreach (var pk in _table.Primarys)
{
- if (pkidx > 0) sb.Append(" || ");
+ if (pkidx > 0) sb.Append(" || '+' || ");
sb.Append(_commonUtils.FormatSql("{0}", pk.GetMapValue(d))).Append("::varchar");
++pkidx;
}
diff --git a/Providers/FreeSql.Provider.Odbc/MySql/Curd/OdbcMySqlUpdate.cs b/Providers/FreeSql.Provider.Odbc/MySql/Curd/OdbcMySqlUpdate.cs
index c2234536..b0892779 100644
--- a/Providers/FreeSql.Provider.Odbc/MySql/Curd/OdbcMySqlUpdate.cs
+++ b/Providers/FreeSql.Provider.Odbc/MySql/Curd/OdbcMySqlUpdate.cs
@@ -73,7 +73,7 @@ namespace FreeSql.Odbc.MySql
var pkidx = 0;
foreach (var pk in _table.Primarys)
{
- if (pkidx > 0) caseWhen.Append(", ");
+ if (pkidx > 0) caseWhen.Append(", '+', ");
caseWhen.Append(_commonUtils.QuoteReadColumn(pk.CsType, pk.Attribute.MapType, _commonUtils.QuoteSqlName(pk.Attribute.Name)));
++pkidx;
}
@@ -91,7 +91,7 @@ namespace FreeSql.Odbc.MySql
var pkidx = 0;
foreach (var pk in _table.Primarys)
{
- if (pkidx > 0) sb.Append(", ");
+ if (pkidx > 0) sb.Append(", '+', ");
sb.Append(_commonUtils.FormatSql("{0}", pk.GetMapValue(d)));
++pkidx;
}
diff --git a/Providers/FreeSql.Provider.Odbc/Oracle/Curd/OdbcOracleUpdate.cs b/Providers/FreeSql.Provider.Odbc/Oracle/Curd/OdbcOracleUpdate.cs
index 629d3d89..97f4f680 100644
--- a/Providers/FreeSql.Provider.Odbc/Oracle/Curd/OdbcOracleUpdate.cs
+++ b/Providers/FreeSql.Provider.Odbc/Oracle/Curd/OdbcOracleUpdate.cs
@@ -39,7 +39,7 @@ namespace FreeSql.Odbc.Oracle
var pkidx = 0;
foreach (var pk in _table.Primarys)
{
- if (pkidx > 0) caseWhen.Append(" || ");
+ if (pkidx > 0) caseWhen.Append(" || '+' || ");
caseWhen.Append(_commonUtils.QuoteReadColumn(pk.CsType, pk.Attribute.MapType, _commonUtils.QuoteSqlName(pk.Attribute.Name)));
++pkidx;
}
@@ -57,7 +57,7 @@ namespace FreeSql.Odbc.Oracle
var pkidx = 0;
foreach (var pk in _table.Primarys)
{
- if (pkidx > 0) sb.Append(" || ");
+ if (pkidx > 0) sb.Append(" || '+' || ");
sb.Append(_commonUtils.FormatSql("{0}", pk.GetMapValue(d)));
++pkidx;
}
diff --git a/Providers/FreeSql.Provider.Odbc/PostgreSQL/Curd/OdbcPostgreSQLUpdate.cs b/Providers/FreeSql.Provider.Odbc/PostgreSQL/Curd/OdbcPostgreSQLUpdate.cs
index f62def8f..fb8ce06a 100644
--- a/Providers/FreeSql.Provider.Odbc/PostgreSQL/Curd/OdbcPostgreSQLUpdate.cs
+++ b/Providers/FreeSql.Provider.Odbc/PostgreSQL/Curd/OdbcPostgreSQLUpdate.cs
@@ -72,7 +72,7 @@ namespace FreeSql.Odbc.PostgreSQL
var pkidx = 0;
foreach (var pk in _table.Primarys)
{
- if (pkidx > 0) caseWhen.Append(" || ");
+ if (pkidx > 0) caseWhen.Append(" || '+' || ");
caseWhen.Append(_commonUtils.QuoteReadColumn(pk.CsType, pk.Attribute.MapType, _commonUtils.QuoteSqlName(pk.Attribute.Name))).Append("::varchar");
++pkidx;
}
@@ -90,7 +90,7 @@ namespace FreeSql.Odbc.PostgreSQL
var pkidx = 0;
foreach (var pk in _table.Primarys)
{
- if (pkidx > 0) sb.Append(" || ");
+ if (pkidx > 0) sb.Append(" || '+' || ");
sb.Append(_commonUtils.FormatSql("{0}", pk.GetMapValue(d))).Append("::varchar");
++pkidx;
}
diff --git a/Providers/FreeSql.Provider.Odbc/SqlServer/Curd/OdbcSqlServerUpdate.cs b/Providers/FreeSql.Provider.Odbc/SqlServer/Curd/OdbcSqlServerUpdate.cs
index aa57a9de..c6b1f146 100644
--- a/Providers/FreeSql.Provider.Odbc/SqlServer/Curd/OdbcSqlServerUpdate.cs
+++ b/Providers/FreeSql.Provider.Odbc/SqlServer/Curd/OdbcSqlServerUpdate.cs
@@ -77,7 +77,7 @@ namespace FreeSql.Odbc.SqlServer
var pkidx = 0;
foreach (var pk in _table.Primarys)
{
- if (pkidx > 0) caseWhen.Append(", ");
+ if (pkidx > 0) caseWhen.Append(" + '+' + ");
caseWhen.Append("cast(").Append(_commonUtils.QuoteReadColumn(pk.CsType, pk.Attribute.MapType, _commonUtils.QuoteSqlName(pk.Attribute.Name))).Append(" as varchar)");
++pkidx;
}
@@ -94,7 +94,7 @@ namespace FreeSql.Odbc.SqlServer
var pkidx = 0;
foreach (var pk in _table.Primarys)
{
- if (pkidx > 0) sb.Append(", ");
+ if (pkidx > 0) sb.Append(" + '+' + ");
sb.Append("cast(").Append(_commonUtils.FormatSql("{0}", pk.GetMapValue(d))).Append(" as varchar)");
++pkidx;
}
diff --git a/Providers/FreeSql.Provider.Oracle/Curd/OracleUpdate.cs b/Providers/FreeSql.Provider.Oracle/Curd/OracleUpdate.cs
index 17cc8a5a..d24b384d 100644
--- a/Providers/FreeSql.Provider.Oracle/Curd/OracleUpdate.cs
+++ b/Providers/FreeSql.Provider.Oracle/Curd/OracleUpdate.cs
@@ -39,7 +39,7 @@ namespace FreeSql.Oracle.Curd
var pkidx = 0;
foreach (var pk in _table.Primarys)
{
- if (pkidx > 0) caseWhen.Append(" || ");
+ if (pkidx > 0) caseWhen.Append(" || '+' || ");
caseWhen.Append(_commonUtils.QuoteReadColumn(pk.CsType, pk.Attribute.MapType, _commonUtils.QuoteSqlName(pk.Attribute.Name)));
++pkidx;
}
@@ -57,7 +57,7 @@ namespace FreeSql.Oracle.Curd
var pkidx = 0;
foreach (var pk in _table.Primarys)
{
- if (pkidx > 0) sb.Append(" || ");
+ if (pkidx > 0) sb.Append(" || '+' || ");
sb.Append(_commonUtils.FormatSql("{0}", pk.GetMapValue(d)));
++pkidx;
}
diff --git a/Providers/FreeSql.Provider.PostgreSQL/Curd/PostgreSQLUpdate.cs b/Providers/FreeSql.Provider.PostgreSQL/Curd/PostgreSQLUpdate.cs
index 18773870..ea1320c7 100644
--- a/Providers/FreeSql.Provider.PostgreSQL/Curd/PostgreSQLUpdate.cs
+++ b/Providers/FreeSql.Provider.PostgreSQL/Curd/PostgreSQLUpdate.cs
@@ -81,7 +81,7 @@ namespace FreeSql.PostgreSQL.Curd
var pkidx = 0;
foreach (var pk in _table.Primarys)
{
- if (pkidx > 0) caseWhen.Append(" || ");
+ if (pkidx > 0) caseWhen.Append(" || '+' || ");
if (string.IsNullOrEmpty(InternalTableAlias) == false) caseWhen.Append(InternalTableAlias).Append(".");
caseWhen.Append(_commonUtils.QuoteReadColumn(pk.CsType, pk.Attribute.MapType, _commonUtils.QuoteSqlName(pk.Attribute.Name))).Append("::varchar");
++pkidx;
@@ -100,7 +100,7 @@ namespace FreeSql.PostgreSQL.Curd
var pkidx = 0;
foreach (var pk in _table.Primarys)
{
- if (pkidx > 0) sb.Append(" || ");
+ if (pkidx > 0) sb.Append(" || '+' || ");
sb.Append(_commonUtils.FormatSql("{0}", pk.GetMapValue(d))).Append("::varchar");
++pkidx;
}
diff --git a/Providers/FreeSql.Provider.SqlServer/Curd/SqlServerUpdate.cs b/Providers/FreeSql.Provider.SqlServer/Curd/SqlServerUpdate.cs
index 4b69d8c5..bfb9e139 100644
--- a/Providers/FreeSql.Provider.SqlServer/Curd/SqlServerUpdate.cs
+++ b/Providers/FreeSql.Provider.SqlServer/Curd/SqlServerUpdate.cs
@@ -78,7 +78,7 @@ namespace FreeSql.SqlServer.Curd
var pkidx = 0;
foreach (var pk in _table.Primarys)
{
- if (pkidx > 0) caseWhen.Append(", ");
+ if (pkidx > 0) caseWhen.Append(" + '+' + ");
caseWhen.Append("cast(").Append(_commonUtils.QuoteReadColumn(pk.CsType, pk.Attribute.MapType, _commonUtils.QuoteSqlName(pk.Attribute.Name))).Append(" as varchar)");
++pkidx;
}
@@ -95,7 +95,7 @@ namespace FreeSql.SqlServer.Curd
var pkidx = 0;
foreach (var pk in _table.Primarys)
{
- if (pkidx > 0) sb.Append(", ");
+ if (pkidx > 0) sb.Append(" + '+' + ");
sb.Append("cast(").Append(_commonUtils.FormatSql("{0}", pk.GetMapValue(d))).Append(" as varchar)");
++pkidx;
}
diff --git a/Providers/FreeSql.Provider.Sqlite/Curd/SqliteUpdate.cs b/Providers/FreeSql.Provider.Sqlite/Curd/SqliteUpdate.cs
index 8988d244..507d4e6f 100644
--- a/Providers/FreeSql.Provider.Sqlite/Curd/SqliteUpdate.cs
+++ b/Providers/FreeSql.Provider.Sqlite/Curd/SqliteUpdate.cs
@@ -35,11 +35,11 @@ namespace FreeSql.Sqlite.Curd
caseWhen.Append(_commonUtils.QuoteReadColumn(pk.CsType, pk.Attribute.MapType, _commonUtils.QuoteSqlName(pk.Attribute.Name)));
return;
}
- caseWhen.Append("CONCAT(");
+ caseWhen.Append("(");
var pkidx = 0;
foreach (var pk in _table.Primarys)
{
- if (pkidx > 0) caseWhen.Append(", ");
+ if (pkidx > 0) caseWhen.Append(" || '+' || ");
caseWhen.Append(_commonUtils.QuoteReadColumn(pk.CsType, pk.Attribute.MapType, _commonUtils.QuoteSqlName(pk.Attribute.Name)));
++pkidx;
}
@@ -53,11 +53,11 @@ namespace FreeSql.Sqlite.Curd
sb.Append(_commonUtils.FormatSql("{0}", _table.Primarys.First().GetMapValue(d)));
return;
}
- sb.Append("CONCAT(");
+ sb.Append("(");
var pkidx = 0;
foreach (var pk in _table.Primarys)
{
- if (pkidx > 0) sb.Append(", ");
+ if (pkidx > 0) sb.Append(" || '+' || ");
sb.Append(_commonUtils.FormatSql("{0}", pk.GetMapValue(d)));
++pkidx;
}