mirror of
				https://github.com/nsnail/FreeSql.git
				synced 2025-11-04 17:20:49 +08:00 
			
		
		
		
	- 完善 IUpdate.SetSource 组合主键的数据更新单元测试;
This commit is contained in:
		@@ -110,13 +110,6 @@
 | 
				
			|||||||
            清空状态数据
 | 
					            清空状态数据
 | 
				
			||||||
            </summary>
 | 
					            </summary>
 | 
				
			||||||
        </member>
 | 
					        </member>
 | 
				
			||||||
        <member name="M:FreeSql.DbSet`1.RemoveAsync(System.Linq.Expressions.Expression{System.Func{`0,System.Boolean}})">
 | 
					 | 
				
			||||||
            <summary>
 | 
					 | 
				
			||||||
            根据 lambda 条件删除数据
 | 
					 | 
				
			||||||
            </summary>
 | 
					 | 
				
			||||||
            <param name="predicate"></param>
 | 
					 | 
				
			||||||
            <returns></returns>
 | 
					 | 
				
			||||||
        </member>
 | 
					 | 
				
			||||||
        <member name="M:FreeSql.DbSet`1.Add(`0)">
 | 
					        <member name="M:FreeSql.DbSet`1.Add(`0)">
 | 
				
			||||||
            <summary>
 | 
					            <summary>
 | 
				
			||||||
            添加
 | 
					            添加
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -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);
 | 
					            Assert.Equal("UPDATE `TestEnumUpdateTb` SET `type` = 'sum211', `time` = '0001-01-01 00:00:00.000' WHERE (`id` = 0)", sql);
 | 
				
			||||||
            g.mysql.Update<TestEnumUpdateTb>().NoneParameter().SetSource(new TestEnumUpdateTb { id = (int)id, type = TestEnumUpdateTbType.biggit }).ExecuteAffrows();
 | 
					            g.mysql.Update<TestEnumUpdateTb>().NoneParameter().SetSource(new TestEnumUpdateTb { id = (int)id, type = TestEnumUpdateTbType.biggit }).ExecuteAffrows();
 | 
				
			||||||
            Assert.Equal(TestEnumUpdateTbType.biggit, g.mysql.Select<TestEnumUpdateTb>().Where(a => a.id == id).First()?.type);
 | 
					            Assert.Equal(TestEnumUpdateTbType.biggit, g.mysql.Select<TestEnumUpdateTb>().Where(a => a.id == id).First()?.type);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            sql = g.mysql.Update<ts_source_mpk>().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]
 | 
					        [Fact]
 | 
				
			||||||
        public void IgnoreColumns()
 | 
					        public void IgnoreColumns()
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -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", "");
 | 
					            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);
 | 
					            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<ts_source_mpk>().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<ts_source_mpk>().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<ts_source_mpk>().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<ts_source_mpk>().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<ts_source_mpk>().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]
 | 
					        [Fact]
 | 
				
			||||||
        public void IgnoreColumns()
 | 
					        public void IgnoreColumns()
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -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", "");
 | 
					            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);
 | 
					            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<ts_source_mpk>().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]
 | 
					        [Fact]
 | 
				
			||||||
        public void IgnoreColumns()
 | 
					        public void IgnoreColumns()
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -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);
 | 
					            Assert.Equal("UPDATE `TestEnumUpdateTb` SET `type` = 'sum211', `time` = '0001-01-01 00:00:00.000' WHERE (`id` = 0)", sql);
 | 
				
			||||||
            g.mysql.Update<TestEnumUpdateTb>().NoneParameter().SetSource(new TestEnumUpdateTb { id = (int)id, type = TestEnumUpdateTbType.biggit }).ExecuteAffrows();
 | 
					            g.mysql.Update<TestEnumUpdateTb>().NoneParameter().SetSource(new TestEnumUpdateTb { id = (int)id, type = TestEnumUpdateTbType.biggit }).ExecuteAffrows();
 | 
				
			||||||
            Assert.Equal(TestEnumUpdateTbType.biggit, g.mysql.Select<TestEnumUpdateTb>().Where(a => a.id == id).First()?.type);
 | 
					            Assert.Equal(TestEnumUpdateTbType.biggit, g.mysql.Select<TestEnumUpdateTb>().Where(a => a.id == id).First()?.type);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            sql = g.mysql.Update<ts_source_mpk>().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]
 | 
					        [Fact]
 | 
				
			||||||
        public void IgnoreColumns()
 | 
					        public void IgnoreColumns()
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -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", "");
 | 
					            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);
 | 
					            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<ts_source_mpk>().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]
 | 
					        [Fact]
 | 
				
			||||||
        public void IgnoreColumns()
 | 
					        public void IgnoreColumns()
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -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", "");
 | 
					            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);
 | 
					            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<ts_source_mpk>().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]
 | 
					        [Fact]
 | 
				
			||||||
        public void IgnoreColumns()
 | 
					        public void IgnoreColumns()
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -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", "");
 | 
					            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);
 | 
					            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<ts_source_mpk>().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]
 | 
					        [Fact]
 | 
				
			||||||
        public void IgnoreColumns()
 | 
					        public void IgnoreColumns()
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -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", "");
 | 
					            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);
 | 
					            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<ts_source_mpk>().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<ts_source_mpk>().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<ts_source_mpk>().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<ts_source_mpk>().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<ts_source_mpk>().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]
 | 
					        [Fact]
 | 
				
			||||||
        public void IgnoreColumns()
 | 
					        public void IgnoreColumns()
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -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);
 | 
					            Assert.Equal("UPDATE `TestEnumUpdateTb` SET `type` = 'sum211', `time` = '0001-01-01 00:00:00.000' WHERE (`id` = 0)", sql);
 | 
				
			||||||
            g.mysql.Update<TestEnumUpdateTb>().NoneParameter().SetSource(new TestEnumUpdateTb { id = (int)id, type = TestEnumUpdateTbType.biggit }).ExecuteAffrows();
 | 
					            g.mysql.Update<TestEnumUpdateTb>().NoneParameter().SetSource(new TestEnumUpdateTb { id = (int)id, type = TestEnumUpdateTbType.biggit }).ExecuteAffrows();
 | 
				
			||||||
            Assert.Equal(TestEnumUpdateTbType.biggit, g.mysql.Select<TestEnumUpdateTb>().Where(a => a.id == id).First()?.type);
 | 
					            Assert.Equal(TestEnumUpdateTbType.biggit, g.mysql.Select<TestEnumUpdateTb>().Where(a => a.id == id).First()?.type);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            sql = g.mysql.Update<ts_source_mpk>().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]
 | 
					        [Fact]
 | 
				
			||||||
        public void IgnoreColumns()
 | 
					        public void IgnoreColumns()
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -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", "");
 | 
					            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);
 | 
					            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<ts_source_mpk>().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]
 | 
					        [Fact]
 | 
				
			||||||
        public void IgnoreColumns()
 | 
					        public void IgnoreColumns()
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -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", "");
 | 
					            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);
 | 
					            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<ts_source_mpk>().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]
 | 
					        [Fact]
 | 
				
			||||||
        public void IgnoreColumns()
 | 
					        public void IgnoreColumns()
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -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", "");
 | 
					            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);
 | 
					            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<ts_source_mpk>().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]
 | 
					        [Fact]
 | 
				
			||||||
        public void IgnoreColumns()
 | 
					        public void IgnoreColumns()
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -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", "");
 | 
					            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);
 | 
					            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<ts_source_mpk>().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]
 | 
					        [Fact]
 | 
				
			||||||
        public void IgnoreColumns()
 | 
					        public void IgnoreColumns()
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -2426,180 +2426,7 @@
 | 
				
			|||||||
            </summary>
 | 
					            </summary>
 | 
				
			||||||
        </member>
 | 
					        </member>
 | 
				
			||||||
        <member name="P:FreeSql.IAop.AuditValue">
 | 
					        <member name="P:FreeSql.IAop.AuditValue">
 | 
				
			||||||
            <summary>
 | 
					            <summary<EFBFBD>参数化执行,针对 Insert/Update
 | 
				
			||||||
            Insert/Update自动值处理
 | 
					 | 
				
			||||||
            </summary>
 | 
					 | 
				
			||||||
        </member>
 | 
					 | 
				
			||||||
        <member name="P:FreeSql.Aop.ParseExpressionEventArgs.FreeParse">
 | 
					 | 
				
			||||||
            <summary>
 | 
					 | 
				
			||||||
            内置解析功能,可辅助您进行解析
 | 
					 | 
				
			||||||
            </summary>
 | 
					 | 
				
			||||||
        </member>
 | 
					 | 
				
			||||||
        <member name="P:FreeSql.Aop.ParseExpressionEventArgs.Expression">
 | 
					 | 
				
			||||||
            <summary>
 | 
					 | 
				
			||||||
            需要您解析的表达式
 | 
					 | 
				
			||||||
            </summary>
 | 
					 | 
				
			||||||
        </member>
 | 
					 | 
				
			||||||
        <member name="P:FreeSql.Aop.ParseExpressionEventArgs.Result">
 | 
					 | 
				
			||||||
            <summary>
 | 
					 | 
				
			||||||
            解析后的内容
 | 
					 | 
				
			||||||
            </summary>
 | 
					 | 
				
			||||||
        </member>
 | 
					 | 
				
			||||||
        <member name="P:FreeSql.Aop.ConfigEntityEventArgs.EntityType">
 | 
					 | 
				
			||||||
            <summary>
 | 
					 | 
				
			||||||
            实体类型
 | 
					 | 
				
			||||||
            </summary>
 | 
					 | 
				
			||||||
        </member>
 | 
					 | 
				
			||||||
        <member name="P:FreeSql.Aop.ConfigEntityEventArgs.ModifyResult">
 | 
					 | 
				
			||||||
            <summary>
 | 
					 | 
				
			||||||
            实体配置
 | 
					 | 
				
			||||||
            </summary>
 | 
					 | 
				
			||||||
        </member>
 | 
					 | 
				
			||||||
        <member name="P:FreeSql.Aop.ConfigEntityEventArgs.ModifyIndexResult">
 | 
					 | 
				
			||||||
            <summary>
 | 
					 | 
				
			||||||
            索引配置
 | 
					 | 
				
			||||||
            </summary>
 | 
					 | 
				
			||||||
        </member>
 | 
					 | 
				
			||||||
        <member name="P:FreeSql.Aop.ConfigEntityPropertyEventArgs.EntityType">
 | 
					 | 
				
			||||||
            <summary>
 | 
					 | 
				
			||||||
            实体类型
 | 
					 | 
				
			||||||
            </summary>
 | 
					 | 
				
			||||||
        </member>
 | 
					 | 
				
			||||||
        <member name="P:FreeSql.Aop.ConfigEntityPropertyEventArgs.Property">
 | 
					 | 
				
			||||||
            <summary>
 | 
					 | 
				
			||||||
            实体的属性
 | 
					 | 
				
			||||||
            </summary>
 | 
					 | 
				
			||||||
        </member>
 | 
					 | 
				
			||||||
        <member name="P:FreeSql.Aop.ConfigEntityPropertyEventArgs.ModifyResult">
 | 
					 | 
				
			||||||
            <summary>
 | 
					 | 
				
			||||||
            实体的属性配置
 | 
					 | 
				
			||||||
            </summary>
 | 
					 | 
				
			||||||
        </member>
 | 
					 | 
				
			||||||
        <member name="P:FreeSql.Aop.CurdBeforeEventArgs.Identifier">
 | 
					 | 
				
			||||||
            <summary>
 | 
					 | 
				
			||||||
            标识符,可将 CurdBefore 与 CurdAfter 进行匹配
 | 
					 | 
				
			||||||
            </summary>
 | 
					 | 
				
			||||||
        </member>
 | 
					 | 
				
			||||||
        <member name="P:FreeSql.Aop.CurdBeforeEventArgs.CurdType">
 | 
					 | 
				
			||||||
            <summary>
 | 
					 | 
				
			||||||
            操作类型
 | 
					 | 
				
			||||||
            </summary>
 | 
					 | 
				
			||||||
        </member>
 | 
					 | 
				
			||||||
        <member name="P:FreeSql.Aop.CurdBeforeEventArgs.EntityType">
 | 
					 | 
				
			||||||
            <summary>
 | 
					 | 
				
			||||||
            实体类型
 | 
					 | 
				
			||||||
            </summary>
 | 
					 | 
				
			||||||
        </member>
 | 
					 | 
				
			||||||
        <member name="P:FreeSql.Aop.CurdBeforeEventArgs.Table">
 | 
					 | 
				
			||||||
            <summary>
 | 
					 | 
				
			||||||
            实体类型的元数据
 | 
					 | 
				
			||||||
            </summary>
 | 
					 | 
				
			||||||
        </member>
 | 
					 | 
				
			||||||
        <member name="P:FreeSql.Aop.CurdBeforeEventArgs.Sql">
 | 
					 | 
				
			||||||
            <summary>
 | 
					 | 
				
			||||||
            执行的 SQL
 | 
					 | 
				
			||||||
            </summary>
 | 
					 | 
				
			||||||
        </member>
 | 
					 | 
				
			||||||
        <member name="P:FreeSql.Aop.CurdBeforeEventArgs.DbParms">
 | 
					 | 
				
			||||||
            <summary>
 | 
					 | 
				
			||||||
            参数化命令
 | 
					 | 
				
			||||||
            </summary>
 | 
					 | 
				
			||||||
        </member>
 | 
					 | 
				
			||||||
        <member name="P:FreeSql.Aop.CurdAfterEventArgs.Exception">
 | 
					 | 
				
			||||||
            <summary>
 | 
					 | 
				
			||||||
            发生的错误
 | 
					 | 
				
			||||||
            </summary>
 | 
					 | 
				
			||||||
        </member>
 | 
					 | 
				
			||||||
        <member name="P:FreeSql.Aop.CurdAfterEventArgs.ExecuteResult">
 | 
					 | 
				
			||||||
            <summary>
 | 
					 | 
				
			||||||
            执行SQL命令,返回的结果
 | 
					 | 
				
			||||||
            </summary>
 | 
					 | 
				
			||||||
        </member>
 | 
					 | 
				
			||||||
        <member name="P:FreeSql.Aop.CurdAfterEventArgs.ElapsedTicks">
 | 
					 | 
				
			||||||
            <summary>
 | 
					 | 
				
			||||||
            耗时(单位:Ticks)
 | 
					 | 
				
			||||||
            </summary>
 | 
					 | 
				
			||||||
        </member>
 | 
					 | 
				
			||||||
        <member name="P:FreeSql.Aop.CurdAfterEventArgs.ElapsedMilliseconds">
 | 
					 | 
				
			||||||
            <summary>
 | 
					 | 
				
			||||||
            耗时(单位:毫秒)
 | 
					 | 
				
			||||||
            </summary>
 | 
					 | 
				
			||||||
        </member>
 | 
					 | 
				
			||||||
        <member name="P:FreeSql.Aop.SyncStructureBeforeEventArgs.Identifier">
 | 
					 | 
				
			||||||
            <summary>
 | 
					 | 
				
			||||||
            标识符,可将 SyncStructureBeforeEventArgs 与 SyncStructureAfterEventArgs 进行匹配
 | 
					 | 
				
			||||||
            </summary>
 | 
					 | 
				
			||||||
        </member>
 | 
					 | 
				
			||||||
        <member name="P:FreeSql.Aop.SyncStructureBeforeEventArgs.EntityTypes">
 | 
					 | 
				
			||||||
            <summary>
 | 
					 | 
				
			||||||
            实体类型
 | 
					 | 
				
			||||||
            </summary>
 | 
					 | 
				
			||||||
        </member>
 | 
					 | 
				
			||||||
        <member name="P:FreeSql.Aop.SyncStructureAfterEventArgs.Sql">
 | 
					 | 
				
			||||||
            <summary>
 | 
					 | 
				
			||||||
            执行的 SQL
 | 
					 | 
				
			||||||
            </summary>
 | 
					 | 
				
			||||||
        </member>
 | 
					 | 
				
			||||||
        <member name="P:FreeSql.Aop.SyncStructureAfterEventArgs.Exception">
 | 
					 | 
				
			||||||
            <summary>
 | 
					 | 
				
			||||||
            发生的错误
 | 
					 | 
				
			||||||
            </summary>
 | 
					 | 
				
			||||||
        </member>
 | 
					 | 
				
			||||||
        <member name="P:FreeSql.Aop.SyncStructureAfterEventArgs.ElapsedTicks">
 | 
					 | 
				
			||||||
            <summary>
 | 
					 | 
				
			||||||
            耗时(单位:Ticks)
 | 
					 | 
				
			||||||
            </summary>
 | 
					 | 
				
			||||||
        </member>
 | 
					 | 
				
			||||||
        <member name="P:FreeSql.Aop.SyncStructureAfterEventArgs.ElapsedMilliseconds">
 | 
					 | 
				
			||||||
            <summary>
 | 
					 | 
				
			||||||
            耗时(单位:毫秒)
 | 
					 | 
				
			||||||
            </summary>
 | 
					 | 
				
			||||||
        </member>
 | 
					 | 
				
			||||||
        <member name="P:FreeSql.Aop.AuditValueEventArgs.AuditValueType">
 | 
					 | 
				
			||||||
            <summary>
 | 
					 | 
				
			||||||
            类型
 | 
					 | 
				
			||||||
            </summary>
 | 
					 | 
				
			||||||
        </member>
 | 
					 | 
				
			||||||
        <member name="P:FreeSql.Aop.AuditValueEventArgs.Column">
 | 
					 | 
				
			||||||
            <summary>
 | 
					 | 
				
			||||||
            属性列的元数据
 | 
					 | 
				
			||||||
            </summary>
 | 
					 | 
				
			||||||
        </member>
 | 
					 | 
				
			||||||
        <member name="P:FreeSql.Aop.AuditValueEventArgs.Property">
 | 
					 | 
				
			||||||
            <summary>
 | 
					 | 
				
			||||||
            反射的属性信息
 | 
					 | 
				
			||||||
            </summary>
 | 
					 | 
				
			||||||
        </member>
 | 
					 | 
				
			||||||
        <member name="P:FreeSql.Aop.AuditValueEventArgs.Value">
 | 
					 | 
				
			||||||
            <summary>
 | 
					 | 
				
			||||||
            获取实体的属性值,也可以设置实体的属性新值
 | 
					 | 
				
			||||||
            </summary>
 | 
					 | 
				
			||||||
        </member>
 | 
					 | 
				
			||||||
        <member name="P:FreeSql.ICodeFirst.IsAutoSyncStructure">
 | 
					 | 
				
			||||||
            <summary>
 | 
					 | 
				
			||||||
            【开发环境必备】自动同步实体结构到数据库,程序运行中检查实体表是否存在,然后创建或修改
 | 
					 | 
				
			||||||
            </summary>
 | 
					 | 
				
			||||||
        </member>
 | 
					 | 
				
			||||||
        <member name="P:FreeSql.ICodeFirst.IsSyncStructureToLower">
 | 
					 | 
				
			||||||
            <summary>
 | 
					 | 
				
			||||||
            转小写同步结构
 | 
					 | 
				
			||||||
            </summary>
 | 
					 | 
				
			||||||
        </member>
 | 
					 | 
				
			||||||
        <member name="P:FreeSql.ICodeFirst.IsSyncStructureToUpper">
 | 
					 | 
				
			||||||
            <summary>
 | 
					 | 
				
			||||||
            转大写同步结构
 | 
					 | 
				
			||||||
            </summary>
 | 
					 | 
				
			||||||
        </member>
 | 
					 | 
				
			||||||
        <member name="P:FreeSql.ICodeFirst.IsConfigEntityFromDbFirst">
 | 
					 | 
				
			||||||
            <summary>
 | 
					 | 
				
			||||||
            将数据库的主键、自增、索引设置导入,适用 DbFirst 模式,无须在实体类型上设置 [Column(IsPrimary)] 或者 ConfigEntity。此功能目前可用于 mysql/sqlserver/postgresql/oracle。<para></para>
 | 
					 | 
				
			||||||
            本功能会影响 IFreeSql 首次访问的速度。<para></para>
 | 
					 | 
				
			||||||
            若使用 CodeFirst 创建索引后,又直接在数据库上建了索引,若无本功能下一次 CodeFirst 迁移时数据库上创建的索引将被删除
 | 
					 | 
				
			||||||
            </summary>
 | 
					 | 
				
			||||||
        </member>
 | 
					 | 
				
			||||||
        <member name="P:FreeSql.ICodeFirst.IsNoneCommandParameter">
 | 
					 | 
				
			||||||
            <summary>
 | 
					 | 
				
			||||||
            不使用命令参数化执行,针对 Insert/Update
 | 
					 | 
				
			||||||
            </summary>
 | 
					            </summary>
 | 
				
			||||||
        </member>
 | 
					        </member>
 | 
				
			||||||
        <member name="P:FreeSql.ICodeFirst.IsGenerateCommandParameterWithLambda">
 | 
					        <member name="P:FreeSql.ICodeFirst.IsGenerateCommandParameterWithLambda">
 | 
				
			||||||
@@ -2874,6 +2701,161 @@
 | 
				
			|||||||
            <param name="end"></param>
 | 
					            <param name="end"></param>
 | 
				
			||||||
            <returns></returns>
 | 
					            <returns></returns>
 | 
				
			||||||
        </member>
 | 
					        </member>
 | 
				
			||||||
 | 
					        <member name="M:FreeSqlGlobalExpressionCall.Contains``2(System.Collections.Generic.IEnumerable{System.ValueTuple{``0,``1}},``0,``1)">
 | 
				
			||||||
 | 
					            <summary>
 | 
				
			||||||
 | 
					            C#:从元组集合中查找 exp1, exp2 是否存在<para></para>
 | 
				
			||||||
 | 
					            SQL: <para></para>
 | 
				
			||||||
 | 
					            exp1 = that[0].Item1 and exp2 = that[0].Item2 OR <para></para>
 | 
				
			||||||
 | 
					            exp1 = that[1].Item1 and exp2 = that[1].Item2 OR <para></para>
 | 
				
			||||||
 | 
					            ... <para></para>
 | 
				
			||||||
 | 
					            注意:当 that 为 null 或 empty 时,返回 1=0
 | 
				
			||||||
 | 
					            </summary>
 | 
				
			||||||
 | 
					            <typeparam name="T1"></typeparam>
 | 
				
			||||||
 | 
					            <typeparam name="T2"></typeparam>
 | 
				
			||||||
 | 
					            <param name="that"></param>
 | 
				
			||||||
 | 
					            <param>
 | 
				
			||||||
 | 
					            <summary>
 | 
				
			||||||
 | 
					            获取c#类型,int、long
 | 
				
			||||||
 | 
					            </summary>
 | 
				
			||||||
 | 
					            <param name="column"></param>
 | 
				
			||||||
 | 
					            <returns></returns>
 | 
				
			||||||
 | 
					        </member>
 | 
				
			||||||
 | 
					        <member name="M:FreeSql.IDbFirst.GetCsTypeInfo(FreeSql.DatabaseModel.DbColumnInfo)">
 | 
				
			||||||
 | 
					            <summary>
 | 
				
			||||||
 | 
					            获取c#类型对象
 | 
				
			||||||
 | 
					            </summary>
 | 
				
			||||||
 | 
					            <param name="column"></param>
 | 
				
			||||||
 | 
					            <returns></returns>
 | 
				
			||||||
 | 
					        </member>
 | 
				
			||||||
 | 
					        <member name="M:FreeSql.IDbFirst.GetDataReaderMethod(FreeSql.DatabaseModel.DbColumnInfo)">
 | 
				
			||||||
 | 
					            <summary>
 | 
				
			||||||
 | 
					            获取ado.net读取方法, GetBoolean、GetInt64
 | 
				
			||||||
 | 
					            </summary>
 | 
				
			||||||
 | 
					            <param name="column"></param>
 | 
				
			||||||
 | 
					            <returns></returns>
 | 
				
			||||||
 | 
					        </member>
 | 
				
			||||||
 | 
					        <member name="M:FreeSql.IDbFirst.GetCsStringify(FreeSql.DatabaseModel.DbColumnInfo)">
 | 
				
			||||||
 | 
					            <summary>
 | 
				
			||||||
 | 
					            序列化
 | 
				
			||||||
 | 
					            </summary>
 | 
				
			||||||
 | 
					            <param name="column"></param>
 | 
				
			||||||
 | 
					            <returns></returns>
 | 
				
			||||||
 | 
					        </member>
 | 
				
			||||||
 | 
					        <member name="M:FreeSql.IDbFirst.GetCsParse(FreeSql.DatabaseModel.DbColumnInfo)">
 | 
				
			||||||
 | 
					            <summary>
 | 
				
			||||||
 | 
					            反序列化
 | 
				
			||||||
 | 
					            </summary>
 | 
				
			||||||
 | 
					            <param name="column"></param>
 | 
				
			||||||
 | 
					            <returns></returns>
 | 
				
			||||||
 | 
					        </member>
 | 
				
			||||||
 | 
					        <member name="M:FreeSql.IDbFirst.GetEnumsByDatabase(System.String[])">
 | 
				
			||||||
 | 
					            <summary>
 | 
				
			||||||
 | 
					            获取数据库枚举类型,适用 PostgreSQL
 | 
				
			||||||
 | 
					            </summary>
 | 
				
			||||||
 | 
					            <param name="database"></param>
 | 
				
			||||||
 | 
					            <returns></returns>
 | 
				
			||||||
 | 
					        </member>
 | 
				
			||||||
 | 
					        <member name="M:FreeSql.Internal.CommonProvider.InsertProvider`1.IgnoreCanInsert">
 | 
				
			||||||
 | 
					            <summary>
 | 
				
			||||||
 | 
					            AsType, Ctor, ClearData 三处地方需要重新加载
 | 
				
			||||||
 | 
					            </summary>
 | 
				
			||||||
 | 
					        </member>
 | 
				
			||||||
 | 
					        <member name="M:FreeSql.Internal.CommonProvider.UpdateProvider`1.IgnoreCanUpdate">
 | 
				
			||||||
 | 
					            <summary>
 | 
				
			||||||
 | 
					            AsType, Ctor, ClearData 三处地方需要重新加载
 | 
				
			||||||
 | 
					            </summary>
 | 
				
			||||||
 | 
					        </member>
 | 
				
			||||||
 | 
					        <member name="M:FreeSql.Internal.CommonUtils.GetProperyCommentBySummary(System.Type)">
 | 
				
			||||||
 | 
					            <summary>
 | 
				
			||||||
 | 
					            通过属性的注释文本,通过 xml 读取
 | 
				
			||||||
 | 
					            </summary>
 | 
				
			||||||
 | 
					            <param name="type"></param>
 | 
				
			||||||
 | 
					            <returns>Dict:key=属性名,value=注释</returns>
 | 
				
			||||||
 | 
					        </member>
 | 
				
			||||||
 | 
					        <member name="M:FreeSql.Internal.GlobalFilter.Apply``1(System.String,System.Linq.Expressions.Expression{System.Func{``0,System.Boolean}})">
 | 
				
			||||||
 | 
					            <summary>
 | 
				
			||||||
 | 
					            创建一个过滤器
 | 
				
			||||||
 | 
					            </summary>
 | 
				
			||||||
 | 
					            <typeparam name="TEntity"></typeparam>
 | 
				
			||||||
 | 
					            <param name="name">名字</param>
 | 
				
			||||||
 | 
					            <param name="where">表达式</param>
 | 
				
			||||||
 | 
					            <returns></returns>
 | 
				
			||||||
 | 
					        </member>
 | 
				
			||||||
 | 
					        <member name="P:FreeSql.Internal.Model.TableRef.RefMiddleEntityType">
 | 
				
			||||||
 | 
					            <summary>
 | 
				
			||||||
 | 
					            中间表,多对多
 | 
				
			||||||
 | 
					            </summary>
 | 
				
			||||||
 | 
					        </member>
 | 
				
			||||||
 | 
					        <member name="F:FreeSql.Internal.StringConvertType.None">
 | 
				
			||||||
 | 
					            <summary>
 | 
				
			||||||
 | 
					            不进行任何处理
 | 
				
			||||||
 | 
					            </summary>
 | 
				
			||||||
 | 
					        </member>
 | 
				
			||||||
 | 
					        <member name="F:FreeSql.Internal.StringConvertType.PascalCaseToUnderscore">
 | 
				
			||||||
 | 
					            <summary>
 | 
				
			||||||
 | 
					            将帕斯卡命名字符串转换为下划线分隔字符串
 | 
				
			||||||
 | 
					            <para></para>
 | 
				
			||||||
 | 
					            BigApple -> Big_Apple
 | 
				
			||||||
 | 
					            </summary>
 | 
				
			||||||
 | 
					        </member>
 | 
				
			||||||
 | 
					        <member name="F:FreeSql.Internal.StringConvertType.PascalCaseToUnderscoreWithUpper">
 | 
				
			||||||
 | 
					            <summary>
 | 
				
			||||||
 | 
					            将帕斯卡命名字符串转换为下划线分隔字符串,且转换为全大写
 | 
				
			||||||
 | 
					            <para></para>
 | 
				
			||||||
 | 
					            BigApple -> BIG_APPLE
 | 
				
			||||||
 | 
					            </summary>
 | 
				
			||||||
 | 
					        </member>
 | 
				
			||||||
 | 
					        <member name="F:FreeSql.Internal.StringConvertType.PascalCaseToUnderscoreWithLower">
 | 
				
			||||||
 | 
					            <summary>
 | 
				
			||||||
 | 
					            将帕斯卡命名字符串转换为下划线分隔字符串,且转换为全小写
 | 
				
			||||||
 | 
					            <para></para>
 | 
				
			||||||
 | 
					            BigApple -> big_apple
 | 
				
			||||||
 | 
					            </summary>
 | 
				
			||||||
 | 
					        </member>
 | 
				
			||||||
 | 
					        <member name="F:FreeSql.Internal.StringConvertType.Upper">
 | 
				
			||||||
 | 
					            <summary>
 | 
				
			||||||
 | 
					            将字符串转换为大写
 | 
				
			||||||
 | 
					            <para></para>
 | 
				
			||||||
 | 
					            BigApple -> BIGAPPLE
 | 
				
			||||||
 | 
					            </summary>
 | 
				
			||||||
 | 
					        </member>
 | 
				
			||||||
 | 
					        <member name="F:FreeSql.Internal.StringConvertType.Lower">
 | 
				
			||||||
 | 
					            <summary>
 | 
				
			||||||
 | 
					            将字符串转换为小写
 | 
				
			||||||
 | 
					            <para></para>
 | 
				
			||||||
 | 
					            BigApple -> bigapple
 | 
				
			||||||
 | 
					            </summary>
 | 
				
			||||||
 | 
					        </member>
 | 
				
			||||||
 | 
					        <member name="M:FreeSql.Internal.StringUtils.PascalCaseToUnderScore(System.String)">
 | 
				
			||||||
 | 
					            <summary>
 | 
				
			||||||
 | 
					            将帕斯卡命名字符串转换为下划线分隔字符串
 | 
				
			||||||
 | 
					            <para></para>
 | 
				
			||||||
 | 
					            BigApple -> Big_Apple
 | 
				
			||||||
 | 
					            </summary>
 | 
				
			||||||
 | 
					            <param name="str"></param>
 | 
				
			||||||
 | 
					            <returns></returns>
 | 
				
			||||||
 | 
					        </member>
 | 
				
			||||||
 | 
					        <member name="M:FreeSqlGlobalExpressionCall.Between(System.DateTime,System.DateTime,System.DateTime)">
 | 
				
			||||||
 | 
					            <summary>
 | 
				
			||||||
 | 
					            C#: that >= between && that <= and<para></para>
 | 
				
			||||||
 | 
					            SQL: that BETWEEN between AND and
 | 
				
			||||||
 | 
					            </summary>
 | 
				
			||||||
 | 
					            <param name="that"></param>
 | 
				
			||||||
 | 
					            <param name="between"></param>
 | 
				
			||||||
 | 
					            <param name="and"></param>
 | 
				
			||||||
 | 
					            <returns></returns>
 | 
				
			||||||
 | 
					        </member>
 | 
				
			||||||
 | 
					        <member name="M:FreeSqlGlobalExpressionCall.BetweenEnd(System.DateTime,System.DateTime,System.DateTime)">
 | 
				
			||||||
 | 
					            <summary>
 | 
				
			||||||
 | 
					            注意:这个方法和 Between 有细微区别<para></para>
 | 
				
			||||||
 | 
					            C#: that >= start && that < end<para></para>
 | 
				
			||||||
 | 
					            SQL: that >= start and that < end
 | 
				
			||||||
 | 
					            </summary>
 | 
				
			||||||
 | 
					            <param name="that"></param>
 | 
				
			||||||
 | 
					            <param name="start"></param>
 | 
				
			||||||
 | 
					            <param name="end"></param>
 | 
				
			||||||
 | 
					            <returns></returns>
 | 
				
			||||||
 | 
					        </member>
 | 
				
			||||||
        <member name="M:FreeSqlGlobalExpressionCall.Contains``2(System.Collections.Generic.IEnumerable{System.ValueTuple{``0,``1}},``0,``1)">
 | 
					        <member name="M:FreeSqlGlobalExpressionCall.Contains``2(System.Collections.Generic.IEnumerable{System.ValueTuple{``0,``1}},``0,``1)">
 | 
				
			||||||
            <summary>
 | 
					            <summary>
 | 
				
			||||||
            C#:从元组集合中查找 exp1, exp2 是否存在<para></para>
 | 
					            C#:从元组集合中查找 exp1, exp2 是否存在<para></para>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -43,7 +43,7 @@ namespace FreeSql.MsAccess.Curd
 | 
				
			|||||||
            var pkidx = 0;
 | 
					            var pkidx = 0;
 | 
				
			||||||
            foreach (var pk in _table.Primarys)
 | 
					            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)));
 | 
					                caseWhen.Append(MsAccessUtils.GetCastSql(_commonUtils.QuoteReadColumn(pk.CsType, pk.Attribute.MapType, _commonUtils.QuoteSqlName(pk.Attribute.Name)), typeof(string)));
 | 
				
			||||||
                ++pkidx;
 | 
					                ++pkidx;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
@@ -60,7 +60,7 @@ namespace FreeSql.MsAccess.Curd
 | 
				
			|||||||
            var pkidx = 0;
 | 
					            var pkidx = 0;
 | 
				
			||||||
            foreach (var pk in _table.Primarys)
 | 
					            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)));
 | 
					                sb.Append(MsAccessUtils.GetCastSql(_commonUtils.FormatSql("{0}", pk.GetMapValue(d)), typeof(string)));
 | 
				
			||||||
                ++pkidx;
 | 
					                ++pkidx;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -79,7 +79,7 @@ namespace FreeSql.MySql.Curd
 | 
				
			|||||||
            var pkidx = 0;
 | 
					            var pkidx = 0;
 | 
				
			||||||
            foreach (var pk in _table.Primarys)
 | 
					            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)));
 | 
					                caseWhen.Append(_commonUtils.QuoteReadColumn(pk.CsType, pk.Attribute.MapType, _commonUtils.QuoteSqlName(pk.Attribute.Name)));
 | 
				
			||||||
                ++pkidx;
 | 
					                ++pkidx;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
@@ -97,7 +97,7 @@ namespace FreeSql.MySql.Curd
 | 
				
			|||||||
            var pkidx = 0;
 | 
					            var pkidx = 0;
 | 
				
			||||||
            foreach (var pk in _table.Primarys)
 | 
					            foreach (var pk in _table.Primarys)
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                if (pkidx > 0) sb.Append(", ");
 | 
					                if (pkidx > 0) sb.Append(", '+', ");
 | 
				
			||||||
                sb.Append(_commonUtils.FormatSql("{0}", pk.GetMapValue(d)));
 | 
					                sb.Append(_commonUtils.FormatSql("{0}", pk.GetMapValue(d)));
 | 
				
			||||||
                ++pkidx;
 | 
					                ++pkidx;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -39,7 +39,7 @@ namespace FreeSql.Odbc.Dameng
 | 
				
			|||||||
            var pkidx = 0;
 | 
					            var pkidx = 0;
 | 
				
			||||||
            foreach (var pk in _table.Primarys)
 | 
					            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)));
 | 
					                caseWhen.Append(_commonUtils.QuoteReadColumn(pk.CsType, pk.Attribute.MapType, _commonUtils.QuoteSqlName(pk.Attribute.Name)));
 | 
				
			||||||
                ++pkidx;
 | 
					                ++pkidx;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
@@ -57,7 +57,7 @@ namespace FreeSql.Odbc.Dameng
 | 
				
			|||||||
            var pkidx = 0;
 | 
					            var pkidx = 0;
 | 
				
			||||||
            foreach (var pk in _table.Primarys)
 | 
					            foreach (var pk in _table.Primarys)
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                if (pkidx > 0) sb.Append(" || ");
 | 
					                if (pkidx > 0) sb.Append(" || '+' || ");
 | 
				
			||||||
                sb.Append(_commonUtils.FormatSql("{0}", pk.GetMapValue(d)));
 | 
					                sb.Append(_commonUtils.FormatSql("{0}", pk.GetMapValue(d)));
 | 
				
			||||||
                ++pkidx;
 | 
					                ++pkidx;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -36,7 +36,7 @@ namespace FreeSql.Odbc.Default
 | 
				
			|||||||
            var pkidx = 0;
 | 
					            var pkidx = 0;
 | 
				
			||||||
            foreach (var pk in _table.Primarys)
 | 
					            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));
 | 
					                caseWhen.Append(_utils.Adapter.CastSql(_commonUtils.QuoteReadColumn(pk.CsType, pk.Attribute.MapType, _commonUtils.QuoteSqlName(pk.Attribute.Name)), _utils.Adapter.MappingOdbcTypeVarChar));
 | 
				
			||||||
                ++pkidx;
 | 
					                ++pkidx;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
@@ -53,7 +53,7 @@ namespace FreeSql.Odbc.Default
 | 
				
			|||||||
            var pkidx = 0;
 | 
					            var pkidx = 0;
 | 
				
			||||||
            foreach (var pk in _table.Primarys)
 | 
					            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));
 | 
					                sb.Append(_utils.Adapter.CastSql(_commonUtils.FormatSql("{0}", pk.GetMapValue(d)), _utils.Adapter.MappingOdbcTypeVarChar));
 | 
				
			||||||
                ++pkidx;
 | 
					                ++pkidx;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -38,7 +38,7 @@ namespace FreeSql.Odbc.GBase
 | 
				
			|||||||
            var pkidx = 0;
 | 
					            var pkidx = 0;
 | 
				
			||||||
            foreach (var pk in _table.Primarys)
 | 
					            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");
 | 
					                caseWhen.Append(_commonUtils.QuoteReadColumn(pk.CsType, pk.Attribute.MapType, _commonUtils.QuoteSqlName(pk.Attribute.Name))).Append("::varchar");
 | 
				
			||||||
                ++pkidx;
 | 
					                ++pkidx;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
@@ -56,7 +56,7 @@ namespace FreeSql.Odbc.GBase
 | 
				
			|||||||
            var pkidx = 0;
 | 
					            var pkidx = 0;
 | 
				
			||||||
            foreach (var pk in _table.Primarys)
 | 
					            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");
 | 
					                sb.Append(_commonUtils.FormatSql("{0}", pk.GetMapValue(d))).Append("::varchar");
 | 
				
			||||||
                ++pkidx;
 | 
					                ++pkidx;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -73,7 +73,7 @@ namespace FreeSql.Odbc.MySql
 | 
				
			|||||||
            var pkidx = 0;
 | 
					            var pkidx = 0;
 | 
				
			||||||
            foreach (var pk in _table.Primarys)
 | 
					            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)));
 | 
					                caseWhen.Append(_commonUtils.QuoteReadColumn(pk.CsType, pk.Attribute.MapType, _commonUtils.QuoteSqlName(pk.Attribute.Name)));
 | 
				
			||||||
                ++pkidx;
 | 
					                ++pkidx;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
@@ -91,7 +91,7 @@ namespace FreeSql.Odbc.MySql
 | 
				
			|||||||
            var pkidx = 0;
 | 
					            var pkidx = 0;
 | 
				
			||||||
            foreach (var pk in _table.Primarys)
 | 
					            foreach (var pk in _table.Primarys)
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                if (pkidx > 0) sb.Append(", ");
 | 
					                if (pkidx > 0) sb.Append(", '+', ");
 | 
				
			||||||
                sb.Append(_commonUtils.FormatSql("{0}", pk.GetMapValue(d)));
 | 
					                sb.Append(_commonUtils.FormatSql("{0}", pk.GetMapValue(d)));
 | 
				
			||||||
                ++pkidx;
 | 
					                ++pkidx;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -39,7 +39,7 @@ namespace FreeSql.Odbc.Oracle
 | 
				
			|||||||
            var pkidx = 0;
 | 
					            var pkidx = 0;
 | 
				
			||||||
            foreach (var pk in _table.Primarys)
 | 
					            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)));
 | 
					                caseWhen.Append(_commonUtils.QuoteReadColumn(pk.CsType, pk.Attribute.MapType, _commonUtils.QuoteSqlName(pk.Attribute.Name)));
 | 
				
			||||||
                ++pkidx;
 | 
					                ++pkidx;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
@@ -57,7 +57,7 @@ namespace FreeSql.Odbc.Oracle
 | 
				
			|||||||
            var pkidx = 0;
 | 
					            var pkidx = 0;
 | 
				
			||||||
            foreach (var pk in _table.Primarys)
 | 
					            foreach (var pk in _table.Primarys)
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                if (pkidx > 0) sb.Append(" || ");
 | 
					                if (pkidx > 0) sb.Append(" || '+' || ");
 | 
				
			||||||
                sb.Append(_commonUtils.FormatSql("{0}", pk.GetMapValue(d)));
 | 
					                sb.Append(_commonUtils.FormatSql("{0}", pk.GetMapValue(d)));
 | 
				
			||||||
                ++pkidx;
 | 
					                ++pkidx;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -72,7 +72,7 @@ namespace FreeSql.Odbc.PostgreSQL
 | 
				
			|||||||
            var pkidx = 0;
 | 
					            var pkidx = 0;
 | 
				
			||||||
            foreach (var pk in _table.Primarys)
 | 
					            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");
 | 
					                caseWhen.Append(_commonUtils.QuoteReadColumn(pk.CsType, pk.Attribute.MapType, _commonUtils.QuoteSqlName(pk.Attribute.Name))).Append("::varchar");
 | 
				
			||||||
                ++pkidx;
 | 
					                ++pkidx;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
@@ -90,7 +90,7 @@ namespace FreeSql.Odbc.PostgreSQL
 | 
				
			|||||||
            var pkidx = 0;
 | 
					            var pkidx = 0;
 | 
				
			||||||
            foreach (var pk in _table.Primarys)
 | 
					            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");
 | 
					                sb.Append(_commonUtils.FormatSql("{0}", pk.GetMapValue(d))).Append("::varchar");
 | 
				
			||||||
                ++pkidx;
 | 
					                ++pkidx;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -77,7 +77,7 @@ namespace FreeSql.Odbc.SqlServer
 | 
				
			|||||||
            var pkidx = 0;
 | 
					            var pkidx = 0;
 | 
				
			||||||
            foreach (var pk in _table.Primarys)
 | 
					            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)");
 | 
					                caseWhen.Append("cast(").Append(_commonUtils.QuoteReadColumn(pk.CsType, pk.Attribute.MapType, _commonUtils.QuoteSqlName(pk.Attribute.Name))).Append(" as varchar)");
 | 
				
			||||||
                ++pkidx;
 | 
					                ++pkidx;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
@@ -94,7 +94,7 @@ namespace FreeSql.Odbc.SqlServer
 | 
				
			|||||||
            var pkidx = 0;
 | 
					            var pkidx = 0;
 | 
				
			||||||
            foreach (var pk in _table.Primarys)
 | 
					            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)");
 | 
					                sb.Append("cast(").Append(_commonUtils.FormatSql("{0}", pk.GetMapValue(d))).Append(" as varchar)");
 | 
				
			||||||
                ++pkidx;
 | 
					                ++pkidx;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -39,7 +39,7 @@ namespace FreeSql.Oracle.Curd
 | 
				
			|||||||
            var pkidx = 0;
 | 
					            var pkidx = 0;
 | 
				
			||||||
            foreach (var pk in _table.Primarys)
 | 
					            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)));
 | 
					                caseWhen.Append(_commonUtils.QuoteReadColumn(pk.CsType, pk.Attribute.MapType, _commonUtils.QuoteSqlName(pk.Attribute.Name)));
 | 
				
			||||||
                ++pkidx;
 | 
					                ++pkidx;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
@@ -57,7 +57,7 @@ namespace FreeSql.Oracle.Curd
 | 
				
			|||||||
            var pkidx = 0;
 | 
					            var pkidx = 0;
 | 
				
			||||||
            foreach (var pk in _table.Primarys)
 | 
					            foreach (var pk in _table.Primarys)
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                if (pkidx > 0) sb.Append(" || ");
 | 
					                if (pkidx > 0) sb.Append(" || '+' || ");
 | 
				
			||||||
                sb.Append(_commonUtils.FormatSql("{0}", pk.GetMapValue(d)));
 | 
					                sb.Append(_commonUtils.FormatSql("{0}", pk.GetMapValue(d)));
 | 
				
			||||||
                ++pkidx;
 | 
					                ++pkidx;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -81,7 +81,7 @@ namespace FreeSql.PostgreSQL.Curd
 | 
				
			|||||||
            var pkidx = 0;
 | 
					            var pkidx = 0;
 | 
				
			||||||
            foreach (var pk in _table.Primarys)
 | 
					            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(".");
 | 
					                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");
 | 
					                caseWhen.Append(_commonUtils.QuoteReadColumn(pk.CsType, pk.Attribute.MapType, _commonUtils.QuoteSqlName(pk.Attribute.Name))).Append("::varchar");
 | 
				
			||||||
                ++pkidx;
 | 
					                ++pkidx;
 | 
				
			||||||
@@ -100,7 +100,7 @@ namespace FreeSql.PostgreSQL.Curd
 | 
				
			|||||||
            var pkidx = 0;
 | 
					            var pkidx = 0;
 | 
				
			||||||
            foreach (var pk in _table.Primarys)
 | 
					            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");
 | 
					                sb.Append(_commonUtils.FormatSql("{0}", pk.GetMapValue(d))).Append("::varchar");
 | 
				
			||||||
                ++pkidx;
 | 
					                ++pkidx;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -78,7 +78,7 @@ namespace FreeSql.SqlServer.Curd
 | 
				
			|||||||
            var pkidx = 0;
 | 
					            var pkidx = 0;
 | 
				
			||||||
            foreach (var pk in _table.Primarys)
 | 
					            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)");
 | 
					                caseWhen.Append("cast(").Append(_commonUtils.QuoteReadColumn(pk.CsType, pk.Attribute.MapType, _commonUtils.QuoteSqlName(pk.Attribute.Name))).Append(" as varchar)");
 | 
				
			||||||
                ++pkidx;
 | 
					                ++pkidx;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
@@ -95,7 +95,7 @@ namespace FreeSql.SqlServer.Curd
 | 
				
			|||||||
            var pkidx = 0;
 | 
					            var pkidx = 0;
 | 
				
			||||||
            foreach (var pk in _table.Primarys)
 | 
					            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)");
 | 
					                sb.Append("cast(").Append(_commonUtils.FormatSql("{0}", pk.GetMapValue(d))).Append(" as varchar)");
 | 
				
			||||||
                ++pkidx;
 | 
					                ++pkidx;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -35,11 +35,11 @@ namespace FreeSql.Sqlite.Curd
 | 
				
			|||||||
                caseWhen.Append(_commonUtils.QuoteReadColumn(pk.CsType, pk.Attribute.MapType, _commonUtils.QuoteSqlName(pk.Attribute.Name)));
 | 
					                caseWhen.Append(_commonUtils.QuoteReadColumn(pk.CsType, pk.Attribute.MapType, _commonUtils.QuoteSqlName(pk.Attribute.Name)));
 | 
				
			||||||
                return;
 | 
					                return;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            caseWhen.Append("CONCAT(");
 | 
					            caseWhen.Append("(");
 | 
				
			||||||
            var pkidx = 0;
 | 
					            var pkidx = 0;
 | 
				
			||||||
            foreach (var pk in _table.Primarys)
 | 
					            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)));
 | 
					                caseWhen.Append(_commonUtils.QuoteReadColumn(pk.CsType, pk.Attribute.MapType, _commonUtils.QuoteSqlName(pk.Attribute.Name)));
 | 
				
			||||||
                ++pkidx;
 | 
					                ++pkidx;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
@@ -53,11 +53,11 @@ namespace FreeSql.Sqlite.Curd
 | 
				
			|||||||
                sb.Append(_commonUtils.FormatSql("{0}", _table.Primarys.First().GetMapValue(d)));
 | 
					                sb.Append(_commonUtils.FormatSql("{0}", _table.Primarys.First().GetMapValue(d)));
 | 
				
			||||||
                return;
 | 
					                return;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            sb.Append("CONCAT(");
 | 
					            sb.Append("(");
 | 
				
			||||||
            var pkidx = 0;
 | 
					            var pkidx = 0;
 | 
				
			||||||
            foreach (var pk in _table.Primarys)
 | 
					            foreach (var pk in _table.Primarys)
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                if (pkidx > 0) sb.Append(", ");
 | 
					                if (pkidx > 0) sb.Append(" || '+' || ");
 | 
				
			||||||
                sb.Append(_commonUtils.FormatSql("{0}", pk.GetMapValue(d)));
 | 
					                sb.Append(_commonUtils.FormatSql("{0}", pk.GetMapValue(d)));
 | 
				
			||||||
                ++pkidx;
 | 
					                ++pkidx;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user