mirror of
				https://github.com/nsnail/FreeSql.git
				synced 2025-11-04 17:20:49 +08:00 
			
		
		
		
	- 修复 Enum -> MapType(string) + GroupBy 解析问题;#1727
This commit is contained in:
		@@ -1,6 +1,7 @@
 | 
				
			|||||||
using FreeSql.DataAnnotations;
 | 
					using FreeSql.DataAnnotations;
 | 
				
			||||||
using FreeSql.Tests.DataContext.SqlServer;
 | 
					using FreeSql.Tests.DataContext.SqlServer;
 | 
				
			||||||
using System;
 | 
					using System;
 | 
				
			||||||
 | 
					using System.Linq;
 | 
				
			||||||
using System.Numerics;
 | 
					using System.Numerics;
 | 
				
			||||||
using Xunit;
 | 
					using Xunit;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -31,7 +32,7 @@ namespace FreeSql.Tests.SqlServerMapType
 | 
				
			|||||||
            [Column(MapType = typeof(int?))]
 | 
					            [Column(MapType = typeof(int?))]
 | 
				
			||||||
            public ToStringMapEnum? enumnullable_to_int { get; set; }
 | 
					            public ToStringMapEnum? enumnullable_to_int { get; set; }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        public enum ToStringMapEnum { <EFBFBD>й<EFBFBD><EFBFBD><EFBFBD>, abc, <EFBFBD><EFBFBD><EFBFBD><EFBFBD> }
 | 
					        public enum ToStringMapEnum { 中国人, abc, 香港 }
 | 
				
			||||||
        [Fact]
 | 
					        [Fact]
 | 
				
			||||||
        public void EnumToString()
 | 
					        public void EnumToString()
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
@@ -39,11 +40,11 @@ namespace FreeSql.Tests.SqlServerMapType
 | 
				
			|||||||
            var orm = g.sqlserver;
 | 
					            var orm = g.sqlserver;
 | 
				
			||||||
            var item = new EnumTestMap { };
 | 
					            var item = new EnumTestMap { };
 | 
				
			||||||
            Assert.Equal(1, orm.Insert<EnumTestMap>().AppendData(item).ExecuteAffrows());
 | 
					            Assert.Equal(1, orm.Insert<EnumTestMap>().AppendData(item).ExecuteAffrows());
 | 
				
			||||||
            var find = orm.Select<EnumTestMap>().Where(a => a.id == item.id && a.enum_to_string == ToStringMapEnum.<EFBFBD>й<EFBFBD><EFBFBD><EFBFBD>).First();
 | 
					            var find = orm.Select<EnumTestMap>().Where(a => a.id == item.id && a.enum_to_string == ToStringMapEnum.中国人).First();
 | 
				
			||||||
            Assert.NotNull(find);
 | 
					            Assert.NotNull(find);
 | 
				
			||||||
            Assert.Equal(item.id, find.id);
 | 
					            Assert.Equal(item.id, find.id);
 | 
				
			||||||
            Assert.Equal(item.enum_to_string, find.enum_to_string);
 | 
					            Assert.Equal(item.enum_to_string, find.enum_to_string);
 | 
				
			||||||
            Assert.Equal(ToStringMapEnum.<EFBFBD>й<EFBFBD><EFBFBD><EFBFBD>, find.enum_to_string);
 | 
					            Assert.Equal(ToStringMapEnum.中国人, find.enum_to_string);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            item = new EnumTestMap { enum_to_string = ToStringMapEnum.abc };
 | 
					            item = new EnumTestMap { enum_to_string = ToStringMapEnum.abc };
 | 
				
			||||||
            Assert.Equal(1, orm.Insert<EnumTestMap>().AppendData(item).ExecuteAffrows());
 | 
					            Assert.Equal(1, orm.Insert<EnumTestMap>().AppendData(item).ExecuteAffrows());
 | 
				
			||||||
@@ -54,28 +55,28 @@ namespace FreeSql.Tests.SqlServerMapType
 | 
				
			|||||||
            Assert.Equal(ToStringMapEnum.abc, find.enum_to_string);
 | 
					            Assert.Equal(ToStringMapEnum.abc, find.enum_to_string);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            //update all
 | 
					            //update all
 | 
				
			||||||
            item.enum_to_string = ToStringMapEnum.<EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
 | 
					            item.enum_to_string = ToStringMapEnum.香港;
 | 
				
			||||||
            Assert.Equal(1, orm.Update<EnumTestMap>().SetSource(item).ExecuteAffrows());
 | 
					            Assert.Equal(1, orm.Update<EnumTestMap>().SetSource(item).ExecuteAffrows());
 | 
				
			||||||
            find = orm.Select<EnumTestMap>().Where(a => a.id == item.id && a.enum_to_string == ToStringMapEnum.<EFBFBD><EFBFBD><EFBFBD><EFBFBD>).First();
 | 
					            find = orm.Select<EnumTestMap>().Where(a => a.id == item.id && a.enum_to_string == ToStringMapEnum.香港).First();
 | 
				
			||||||
            Assert.NotNull(find);
 | 
					            Assert.NotNull(find);
 | 
				
			||||||
            Assert.Equal(item.id, find.id);
 | 
					            Assert.Equal(item.id, find.id);
 | 
				
			||||||
            Assert.Equal(item.enum_to_string, find.enum_to_string);
 | 
					            Assert.Equal(item.enum_to_string, find.enum_to_string);
 | 
				
			||||||
            Assert.Equal(ToStringMapEnum.<EFBFBD><EFBFBD><EFBFBD><EFBFBD>, find.enum_to_string);
 | 
					            Assert.Equal(ToStringMapEnum.香港, find.enum_to_string);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            item.enum_to_string = ToStringMapEnum.<EFBFBD>й<EFBFBD><EFBFBD><EFBFBD>;
 | 
					            item.enum_to_string = ToStringMapEnum.中国人;
 | 
				
			||||||
            Assert.Equal(1, orm.Update<EnumTestMap>().SetSource(item).ExecuteAffrows());
 | 
					            Assert.Equal(1, orm.Update<EnumTestMap>().SetSource(item).ExecuteAffrows());
 | 
				
			||||||
            find = orm.Select<EnumTestMap>().Where(a => a.id == item.id && a.enum_to_string == ToStringMapEnum.<EFBFBD>й<EFBFBD><EFBFBD><EFBFBD>).First();
 | 
					            find = orm.Select<EnumTestMap>().Where(a => a.id == item.id && a.enum_to_string == ToStringMapEnum.中国人).First();
 | 
				
			||||||
            Assert.NotNull(find);
 | 
					            Assert.NotNull(find);
 | 
				
			||||||
            Assert.Equal(item.id, find.id);
 | 
					            Assert.Equal(item.id, find.id);
 | 
				
			||||||
            Assert.Equal(item.enum_to_string, find.enum_to_string);
 | 
					            Assert.Equal(item.enum_to_string, find.enum_to_string);
 | 
				
			||||||
            Assert.Equal(ToStringMapEnum.<EFBFBD>й<EFBFBD><EFBFBD><EFBFBD>, find.enum_to_string);
 | 
					            Assert.Equal(ToStringMapEnum.中国人, find.enum_to_string);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            //update set
 | 
					            //update set
 | 
				
			||||||
            Assert.Equal(1, orm.Update<EnumTestMap>().Where(a => a.id == item.id).Set(a => a.enum_to_string, ToStringMapEnum.<EFBFBD><EFBFBD><EFBFBD><EFBFBD>).ExecuteAffrows());
 | 
					            Assert.Equal(1, orm.Update<EnumTestMap>().Where(a => a.id == item.id).Set(a => a.enum_to_string, ToStringMapEnum.香港).ExecuteAffrows());
 | 
				
			||||||
            find = orm.Select<EnumTestMap>().Where(a => a.id == item.id && a.enum_to_string == ToStringMapEnum.<EFBFBD><EFBFBD><EFBFBD><EFBFBD>).First();
 | 
					            find = orm.Select<EnumTestMap>().Where(a => a.id == item.id && a.enum_to_string == ToStringMapEnum.香港).First();
 | 
				
			||||||
            Assert.NotNull(find);
 | 
					            Assert.NotNull(find);
 | 
				
			||||||
            Assert.Equal(item.id, find.id);
 | 
					            Assert.Equal(item.id, find.id);
 | 
				
			||||||
            Assert.Equal(ToStringMapEnum.<EFBFBD><EFBFBD><EFBFBD><EFBFBD>, find.enum_to_string);
 | 
					            Assert.Equal(ToStringMapEnum.香港, find.enum_to_string);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            Assert.Equal(1, orm.Update<EnumTestMap>().Where(a => a.id == item.id).Set(a => a.enum_to_string, ToStringMapEnum.abc).ExecuteAffrows());
 | 
					            Assert.Equal(1, orm.Update<EnumTestMap>().Where(a => a.id == item.id).Set(a => a.enum_to_string, ToStringMapEnum.abc).ExecuteAffrows());
 | 
				
			||||||
            find = orm.Select<EnumTestMap>().Where(a => a.id == item.id && a.enum_to_string == ToStringMapEnum.abc).First();
 | 
					            find = orm.Select<EnumTestMap>().Where(a => a.id == item.id && a.enum_to_string == ToStringMapEnum.abc).First();
 | 
				
			||||||
@@ -83,9 +84,18 @@ namespace FreeSql.Tests.SqlServerMapType
 | 
				
			|||||||
            Assert.Equal(item.id, find.id);
 | 
					            Assert.Equal(item.id, find.id);
 | 
				
			||||||
            Assert.Equal(ToStringMapEnum.abc, find.enum_to_string);
 | 
					            Assert.Equal(ToStringMapEnum.abc, find.enum_to_string);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            var sql = orm.Select<EnumTestMap>().GroupBy(a => a.id).ToSql(g => new { 
 | 
				
			||||||
 | 
					                id = g.Key, 
 | 
				
			||||||
 | 
					                sum1 = g.Sum(g.Value.enum_to_string == ToStringMapEnum.香港 || g.Value.enum_to_string == ToStringMapEnum.abc ? 1 : 0),
 | 
				
			||||||
 | 
					                sum2 = g.Sum(g.Value.enum_to_string == ToStringMapEnum.中国人 || g.Value.enum_to_string == ToStringMapEnum.abc ? 1 : 0),
 | 
				
			||||||
 | 
					            });
 | 
				
			||||||
 | 
					            Assert.Equal(@"SELECT a.[id] as1, sum(case when (a.[enum_to_string] = N'香港' OR a.[enum_to_string] = N'abc') then 1 else 0 end) as2, sum(case when (a.[enum_to_string] = N'中国人' OR a.[enum_to_string] = N'abc') then 1 else 0 end) as3 
 | 
				
			||||||
 | 
					FROM [EnumTestMap] a 
 | 
				
			||||||
 | 
					GROUP BY a.[id]", sql);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            //delete
 | 
					            //delete
 | 
				
			||||||
            Assert.Equal(0, orm.Delete<EnumTestMap>().Where(a => a.id == item.id && a.enum_to_string == ToStringMapEnum.<EFBFBD>й<EFBFBD><EFBFBD><EFBFBD>).ExecuteAffrows());
 | 
					            Assert.Equal(0, orm.Delete<EnumTestMap>().Where(a => a.id == item.id && a.enum_to_string == ToStringMapEnum.中国人).ExecuteAffrows());
 | 
				
			||||||
            Assert.Equal(0, orm.Delete<EnumTestMap>().Where(a => a.id == item.id && a.enum_to_string == ToStringMapEnum.<EFBFBD><EFBFBD><EFBFBD><EFBFBD>).ExecuteAffrows());
 | 
					            Assert.Equal(0, orm.Delete<EnumTestMap>().Where(a => a.id == item.id && a.enum_to_string == ToStringMapEnum.香港).ExecuteAffrows());
 | 
				
			||||||
            Assert.Equal(1, orm.Delete<EnumTestMap>().Where(a => a.id == item.id && a.enum_to_string == ToStringMapEnum.abc).ExecuteAffrows());
 | 
					            Assert.Equal(1, orm.Delete<EnumTestMap>().Where(a => a.id == item.id && a.enum_to_string == ToStringMapEnum.abc).ExecuteAffrows());
 | 
				
			||||||
            Assert.Null(orm.Select<EnumTestMap>().Where(a => a.id == item.id).First());
 | 
					            Assert.Null(orm.Select<EnumTestMap>().Where(a => a.id == item.id).First());
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
@@ -102,26 +112,26 @@ namespace FreeSql.Tests.SqlServerMapType
 | 
				
			|||||||
            Assert.Equal(item.enumnullable_to_string, find.enumnullable_to_string);
 | 
					            Assert.Equal(item.enumnullable_to_string, find.enumnullable_to_string);
 | 
				
			||||||
            Assert.Null(find.enumnullable_to_string);
 | 
					            Assert.Null(find.enumnullable_to_string);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            item = new EnumTestMap { enumnullable_to_string = ToStringMapEnum.<EFBFBD>й<EFBFBD><EFBFBD><EFBFBD> };
 | 
					            item = new EnumTestMap { enumnullable_to_string = ToStringMapEnum.中国人 };
 | 
				
			||||||
            Assert.Equal(1, orm.Insert<EnumTestMap>().AppendData(item).ExecuteAffrows());
 | 
					            Assert.Equal(1, orm.Insert<EnumTestMap>().AppendData(item).ExecuteAffrows());
 | 
				
			||||||
            find = orm.Select<EnumTestMap>().Where(a => a.id == item.id && a.enumnullable_to_string == ToStringMapEnum.<EFBFBD>й<EFBFBD><EFBFBD><EFBFBD>).First();
 | 
					            find = orm.Select<EnumTestMap>().Where(a => a.id == item.id && a.enumnullable_to_string == ToStringMapEnum.中国人).First();
 | 
				
			||||||
            Assert.NotNull(find);
 | 
					            Assert.NotNull(find);
 | 
				
			||||||
            Assert.Equal(item.id, find.id);
 | 
					            Assert.Equal(item.id, find.id);
 | 
				
			||||||
            Assert.Equal(item.enumnullable_to_string, find.enumnullable_to_string);
 | 
					            Assert.Equal(item.enumnullable_to_string, find.enumnullable_to_string);
 | 
				
			||||||
            Assert.Equal(ToStringMapEnum.<EFBFBD>й<EFBFBD><EFBFBD><EFBFBD>, find.enumnullable_to_string);
 | 
					            Assert.Equal(ToStringMapEnum.中国人, find.enumnullable_to_string);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            //update all
 | 
					            //update all
 | 
				
			||||||
            item.enumnullable_to_string = ToStringMapEnum.<EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
 | 
					            item.enumnullable_to_string = ToStringMapEnum.香港;
 | 
				
			||||||
            Assert.Equal(1, orm.Update<EnumTestMap>().SetSource(item).ExecuteAffrows());
 | 
					            Assert.Equal(1, orm.Update<EnumTestMap>().SetSource(item).ExecuteAffrows());
 | 
				
			||||||
            find = orm.Select<EnumTestMap>().Where(a => a.id == item.id && a.enumnullable_to_string == ToStringMapEnum.<EFBFBD><EFBFBD><EFBFBD><EFBFBD>).First();
 | 
					            find = orm.Select<EnumTestMap>().Where(a => a.id == item.id && a.enumnullable_to_string == ToStringMapEnum.香港).First();
 | 
				
			||||||
            Assert.NotNull(find);
 | 
					            Assert.NotNull(find);
 | 
				
			||||||
            Assert.Equal(item.id, find.id);
 | 
					            Assert.Equal(item.id, find.id);
 | 
				
			||||||
            Assert.Equal(item.enumnullable_to_string, find.enumnullable_to_string);
 | 
					            Assert.Equal(item.enumnullable_to_string, find.enumnullable_to_string);
 | 
				
			||||||
            Assert.Equal(ToStringMapEnum.<EFBFBD><EFBFBD><EFBFBD><EFBFBD>, find.enumnullable_to_string);
 | 
					            Assert.Equal(ToStringMapEnum.香港, find.enumnullable_to_string);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            item.enumnullable_to_string = null;
 | 
					            item.enumnullable_to_string = null;
 | 
				
			||||||
            Assert.Equal(1, orm.Update<EnumTestMap>().SetSource(item).ExecuteAffrows());
 | 
					            Assert.Equal(1, orm.Update<EnumTestMap>().SetSource(item).ExecuteAffrows());
 | 
				
			||||||
            Assert.Null(orm.Select<EnumTestMap>().Where(a => a.id == item.id && a.enumnullable_to_string == ToStringMapEnum.<EFBFBD><EFBFBD><EFBFBD><EFBFBD>).First());
 | 
					            Assert.Null(orm.Select<EnumTestMap>().Where(a => a.id == item.id && a.enumnullable_to_string == ToStringMapEnum.香港).First());
 | 
				
			||||||
            find = orm.Select<EnumTestMap>().Where(a => a.id == item.id && a.enumnullable_to_string == null).First();
 | 
					            find = orm.Select<EnumTestMap>().Where(a => a.id == item.id && a.enumnullable_to_string == null).First();
 | 
				
			||||||
            Assert.NotNull(find);
 | 
					            Assert.NotNull(find);
 | 
				
			||||||
            Assert.Equal(item.id, find.id);
 | 
					            Assert.Equal(item.id, find.id);
 | 
				
			||||||
@@ -144,8 +154,8 @@ namespace FreeSql.Tests.SqlServerMapType
 | 
				
			|||||||
            Assert.Null(find.enumnullable_to_string);
 | 
					            Assert.Null(find.enumnullable_to_string);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            //delete
 | 
					            //delete
 | 
				
			||||||
            Assert.Equal(0, orm.Delete<EnumTestMap>().Where(a => a.id == item.id && a.enumnullable_to_string == ToStringMapEnum.<EFBFBD>й<EFBFBD><EFBFBD><EFBFBD>).ExecuteAffrows());
 | 
					            Assert.Equal(0, orm.Delete<EnumTestMap>().Where(a => a.id == item.id && a.enumnullable_to_string == ToStringMapEnum.中国人).ExecuteAffrows());
 | 
				
			||||||
            Assert.Equal(0, orm.Delete<EnumTestMap>().Where(a => a.id == item.id && a.enumnullable_to_string == ToStringMapEnum.<EFBFBD><EFBFBD><EFBFBD><EFBFBD>).ExecuteAffrows());
 | 
					            Assert.Equal(0, orm.Delete<EnumTestMap>().Where(a => a.id == item.id && a.enumnullable_to_string == ToStringMapEnum.香港).ExecuteAffrows());
 | 
				
			||||||
            Assert.Equal(1, orm.Delete<EnumTestMap>().Where(a => a.id == item.id && a.enumnullable_to_string == null).ExecuteAffrows());
 | 
					            Assert.Equal(1, orm.Delete<EnumTestMap>().Where(a => a.id == item.id && a.enumnullable_to_string == null).ExecuteAffrows());
 | 
				
			||||||
            Assert.Null(orm.Select<EnumTestMap>().Where(a => a.id == item.id).First());
 | 
					            Assert.Null(orm.Select<EnumTestMap>().Where(a => a.id == item.id).First());
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
@@ -157,11 +167,11 @@ namespace FreeSql.Tests.SqlServerMapType
 | 
				
			|||||||
            var orm = g.sqlserver;
 | 
					            var orm = g.sqlserver;
 | 
				
			||||||
            var item = new EnumTestMap { };
 | 
					            var item = new EnumTestMap { };
 | 
				
			||||||
            Assert.Equal(1, orm.Insert<EnumTestMap>().AppendData(item).ExecuteAffrows());
 | 
					            Assert.Equal(1, orm.Insert<EnumTestMap>().AppendData(item).ExecuteAffrows());
 | 
				
			||||||
            var find = orm.Select<EnumTestMap>().Where(a => a.id == item.id && a.enum_to_int == ToStringMapEnum.<EFBFBD>й<EFBFBD><EFBFBD><EFBFBD>).First();
 | 
					            var find = orm.Select<EnumTestMap>().Where(a => a.id == item.id && a.enum_to_int == ToStringMapEnum.中国人).First();
 | 
				
			||||||
            Assert.NotNull(find);
 | 
					            Assert.NotNull(find);
 | 
				
			||||||
            Assert.Equal(item.id, find.id);
 | 
					            Assert.Equal(item.id, find.id);
 | 
				
			||||||
            Assert.Equal(item.enum_to_int, find.enum_to_int);
 | 
					            Assert.Equal(item.enum_to_int, find.enum_to_int);
 | 
				
			||||||
            Assert.Equal(ToStringMapEnum.<EFBFBD>й<EFBFBD><EFBFBD><EFBFBD>, find.enum_to_int);
 | 
					            Assert.Equal(ToStringMapEnum.中国人, find.enum_to_int);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            item = new EnumTestMap { enum_to_int = ToStringMapEnum.abc };
 | 
					            item = new EnumTestMap { enum_to_int = ToStringMapEnum.abc };
 | 
				
			||||||
            Assert.Equal(1, orm.Insert<EnumTestMap>().AppendData(item).ExecuteAffrows());
 | 
					            Assert.Equal(1, orm.Insert<EnumTestMap>().AppendData(item).ExecuteAffrows());
 | 
				
			||||||
@@ -172,28 +182,28 @@ namespace FreeSql.Tests.SqlServerMapType
 | 
				
			|||||||
            Assert.Equal(ToStringMapEnum.abc, find.enum_to_int);
 | 
					            Assert.Equal(ToStringMapEnum.abc, find.enum_to_int);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            //update all
 | 
					            //update all
 | 
				
			||||||
            item.enum_to_int = ToStringMapEnum.<EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
 | 
					            item.enum_to_int = ToStringMapEnum.香港;
 | 
				
			||||||
            Assert.Equal(1, orm.Update<EnumTestMap>().SetSource(item).ExecuteAffrows());
 | 
					            Assert.Equal(1, orm.Update<EnumTestMap>().SetSource(item).ExecuteAffrows());
 | 
				
			||||||
            find = orm.Select<EnumTestMap>().Where(a => a.id == item.id && a.enum_to_int == ToStringMapEnum.<EFBFBD><EFBFBD><EFBFBD><EFBFBD>).First();
 | 
					            find = orm.Select<EnumTestMap>().Where(a => a.id == item.id && a.enum_to_int == ToStringMapEnum.香港).First();
 | 
				
			||||||
            Assert.NotNull(find);
 | 
					            Assert.NotNull(find);
 | 
				
			||||||
            Assert.Equal(item.id, find.id);
 | 
					            Assert.Equal(item.id, find.id);
 | 
				
			||||||
            Assert.Equal(item.enum_to_int, find.enum_to_int);
 | 
					            Assert.Equal(item.enum_to_int, find.enum_to_int);
 | 
				
			||||||
            Assert.Equal(ToStringMapEnum.<EFBFBD><EFBFBD><EFBFBD><EFBFBD>, find.enum_to_int);
 | 
					            Assert.Equal(ToStringMapEnum.香港, find.enum_to_int);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            item.enum_to_int = ToStringMapEnum.<EFBFBD>й<EFBFBD><EFBFBD><EFBFBD>;
 | 
					            item.enum_to_int = ToStringMapEnum.中国人;
 | 
				
			||||||
            Assert.Equal(1, orm.Update<EnumTestMap>().SetSource(item).ExecuteAffrows());
 | 
					            Assert.Equal(1, orm.Update<EnumTestMap>().SetSource(item).ExecuteAffrows());
 | 
				
			||||||
            find = orm.Select<EnumTestMap>().Where(a => a.id == item.id && a.enum_to_int == ToStringMapEnum.<EFBFBD>й<EFBFBD><EFBFBD><EFBFBD>).First();
 | 
					            find = orm.Select<EnumTestMap>().Where(a => a.id == item.id && a.enum_to_int == ToStringMapEnum.中国人).First();
 | 
				
			||||||
            Assert.NotNull(find);
 | 
					            Assert.NotNull(find);
 | 
				
			||||||
            Assert.Equal(item.id, find.id);
 | 
					            Assert.Equal(item.id, find.id);
 | 
				
			||||||
            Assert.Equal(item.enum_to_int, find.enum_to_int);
 | 
					            Assert.Equal(item.enum_to_int, find.enum_to_int);
 | 
				
			||||||
            Assert.Equal(ToStringMapEnum.<EFBFBD>й<EFBFBD><EFBFBD><EFBFBD>, find.enum_to_int);
 | 
					            Assert.Equal(ToStringMapEnum.中国人, find.enum_to_int);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            //update set
 | 
					            //update set
 | 
				
			||||||
            Assert.Equal(1, orm.Update<EnumTestMap>().Where(a => a.id == item.id).Set(a => a.enum_to_int, ToStringMapEnum.<EFBFBD><EFBFBD><EFBFBD><EFBFBD>).ExecuteAffrows());
 | 
					            Assert.Equal(1, orm.Update<EnumTestMap>().Where(a => a.id == item.id).Set(a => a.enum_to_int, ToStringMapEnum.香港).ExecuteAffrows());
 | 
				
			||||||
            find = orm.Select<EnumTestMap>().Where(a => a.id == item.id && a.enum_to_int == ToStringMapEnum.<EFBFBD><EFBFBD><EFBFBD><EFBFBD>).First();
 | 
					            find = orm.Select<EnumTestMap>().Where(a => a.id == item.id && a.enum_to_int == ToStringMapEnum.香港).First();
 | 
				
			||||||
            Assert.NotNull(find);
 | 
					            Assert.NotNull(find);
 | 
				
			||||||
            Assert.Equal(item.id, find.id);
 | 
					            Assert.Equal(item.id, find.id);
 | 
				
			||||||
            Assert.Equal(ToStringMapEnum.<EFBFBD><EFBFBD><EFBFBD><EFBFBD>, find.enum_to_int);
 | 
					            Assert.Equal(ToStringMapEnum.香港, find.enum_to_int);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            Assert.Equal(1, orm.Update<EnumTestMap>().Where(a => a.id == item.id).Set(a => a.enum_to_int, ToStringMapEnum.abc).ExecuteAffrows());
 | 
					            Assert.Equal(1, orm.Update<EnumTestMap>().Where(a => a.id == item.id).Set(a => a.enum_to_int, ToStringMapEnum.abc).ExecuteAffrows());
 | 
				
			||||||
            find = orm.Select<EnumTestMap>().Where(a => a.id == item.id && a.enum_to_int == ToStringMapEnum.abc).First();
 | 
					            find = orm.Select<EnumTestMap>().Where(a => a.id == item.id && a.enum_to_int == ToStringMapEnum.abc).First();
 | 
				
			||||||
@@ -202,8 +212,8 @@ namespace FreeSql.Tests.SqlServerMapType
 | 
				
			|||||||
            Assert.Equal(ToStringMapEnum.abc, find.enum_to_int);
 | 
					            Assert.Equal(ToStringMapEnum.abc, find.enum_to_int);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            //delete
 | 
					            //delete
 | 
				
			||||||
            Assert.Equal(0, orm.Delete<EnumTestMap>().Where(a => a.id == item.id && a.enum_to_int == ToStringMapEnum.<EFBFBD>й<EFBFBD><EFBFBD><EFBFBD>).ExecuteAffrows());
 | 
					            Assert.Equal(0, orm.Delete<EnumTestMap>().Where(a => a.id == item.id && a.enum_to_int == ToStringMapEnum.中国人).ExecuteAffrows());
 | 
				
			||||||
            Assert.Equal(0, orm.Delete<EnumTestMap>().Where(a => a.id == item.id && a.enum_to_int == ToStringMapEnum.<EFBFBD><EFBFBD><EFBFBD><EFBFBD>).ExecuteAffrows());
 | 
					            Assert.Equal(0, orm.Delete<EnumTestMap>().Where(a => a.id == item.id && a.enum_to_int == ToStringMapEnum.香港).ExecuteAffrows());
 | 
				
			||||||
            Assert.Equal(1, orm.Delete<EnumTestMap>().Where(a => a.id == item.id && a.enum_to_int == ToStringMapEnum.abc).ExecuteAffrows());
 | 
					            Assert.Equal(1, orm.Delete<EnumTestMap>().Where(a => a.id == item.id && a.enum_to_int == ToStringMapEnum.abc).ExecuteAffrows());
 | 
				
			||||||
            Assert.Null(orm.Select<EnumTestMap>().Where(a => a.id == item.id).First());
 | 
					            Assert.Null(orm.Select<EnumTestMap>().Where(a => a.id == item.id).First());
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
@@ -220,26 +230,26 @@ namespace FreeSql.Tests.SqlServerMapType
 | 
				
			|||||||
            Assert.Equal(item.enumnullable_to_int, find.enumnullable_to_int);
 | 
					            Assert.Equal(item.enumnullable_to_int, find.enumnullable_to_int);
 | 
				
			||||||
            Assert.Null(find.enumnullable_to_int);
 | 
					            Assert.Null(find.enumnullable_to_int);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            item = new EnumTestMap { enumnullable_to_int = ToStringMapEnum.<EFBFBD>й<EFBFBD><EFBFBD><EFBFBD> };
 | 
					            item = new EnumTestMap { enumnullable_to_int = ToStringMapEnum.中国人 };
 | 
				
			||||||
            Assert.Equal(1, orm.Insert<EnumTestMap>().AppendData(item).ExecuteAffrows());
 | 
					            Assert.Equal(1, orm.Insert<EnumTestMap>().AppendData(item).ExecuteAffrows());
 | 
				
			||||||
            find = orm.Select<EnumTestMap>().Where(a => a.id == item.id && a.enumnullable_to_int == ToStringMapEnum.<EFBFBD>й<EFBFBD><EFBFBD><EFBFBD>).First();
 | 
					            find = orm.Select<EnumTestMap>().Where(a => a.id == item.id && a.enumnullable_to_int == ToStringMapEnum.中国人).First();
 | 
				
			||||||
            Assert.NotNull(find);
 | 
					            Assert.NotNull(find);
 | 
				
			||||||
            Assert.Equal(item.id, find.id);
 | 
					            Assert.Equal(item.id, find.id);
 | 
				
			||||||
            Assert.Equal(item.enumnullable_to_int, find.enumnullable_to_int);
 | 
					            Assert.Equal(item.enumnullable_to_int, find.enumnullable_to_int);
 | 
				
			||||||
            Assert.Equal(ToStringMapEnum.<EFBFBD>й<EFBFBD><EFBFBD><EFBFBD>, find.enumnullable_to_int);
 | 
					            Assert.Equal(ToStringMapEnum.中国人, find.enumnullable_to_int);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            //update all
 | 
					            //update all
 | 
				
			||||||
            item.enumnullable_to_int = ToStringMapEnum.<EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
 | 
					            item.enumnullable_to_int = ToStringMapEnum.香港;
 | 
				
			||||||
            Assert.Equal(1, orm.Update<EnumTestMap>().SetSource(item).ExecuteAffrows());
 | 
					            Assert.Equal(1, orm.Update<EnumTestMap>().SetSource(item).ExecuteAffrows());
 | 
				
			||||||
            find = orm.Select<EnumTestMap>().Where(a => a.id == item.id && a.enumnullable_to_int == ToStringMapEnum.<EFBFBD><EFBFBD><EFBFBD><EFBFBD>).First();
 | 
					            find = orm.Select<EnumTestMap>().Where(a => a.id == item.id && a.enumnullable_to_int == ToStringMapEnum.香港).First();
 | 
				
			||||||
            Assert.NotNull(find);
 | 
					            Assert.NotNull(find);
 | 
				
			||||||
            Assert.Equal(item.id, find.id);
 | 
					            Assert.Equal(item.id, find.id);
 | 
				
			||||||
            Assert.Equal(item.enumnullable_to_int, find.enumnullable_to_int);
 | 
					            Assert.Equal(item.enumnullable_to_int, find.enumnullable_to_int);
 | 
				
			||||||
            Assert.Equal(ToStringMapEnum.<EFBFBD><EFBFBD><EFBFBD><EFBFBD>, find.enumnullable_to_int);
 | 
					            Assert.Equal(ToStringMapEnum.香港, find.enumnullable_to_int);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            item.enumnullable_to_int = null;
 | 
					            item.enumnullable_to_int = null;
 | 
				
			||||||
            Assert.Equal(1, orm.Update<EnumTestMap>().SetSource(item).ExecuteAffrows());
 | 
					            Assert.Equal(1, orm.Update<EnumTestMap>().SetSource(item).ExecuteAffrows());
 | 
				
			||||||
            Assert.Null(orm.Select<EnumTestMap>().Where(a => a.id == item.id && a.enumnullable_to_int == ToStringMapEnum.<EFBFBD><EFBFBD><EFBFBD><EFBFBD>).First());
 | 
					            Assert.Null(orm.Select<EnumTestMap>().Where(a => a.id == item.id && a.enumnullable_to_int == ToStringMapEnum.香港).First());
 | 
				
			||||||
            find = orm.Select<EnumTestMap>().Where(a => a.id == item.id && a.enumnullable_to_int == null).First();
 | 
					            find = orm.Select<EnumTestMap>().Where(a => a.id == item.id && a.enumnullable_to_int == null).First();
 | 
				
			||||||
            Assert.NotNull(find);
 | 
					            Assert.NotNull(find);
 | 
				
			||||||
            Assert.Equal(item.id, find.id);
 | 
					            Assert.Equal(item.id, find.id);
 | 
				
			||||||
@@ -262,8 +272,8 @@ namespace FreeSql.Tests.SqlServerMapType
 | 
				
			|||||||
            Assert.Null(find.enumnullable_to_int);
 | 
					            Assert.Null(find.enumnullable_to_int);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            //delete
 | 
					            //delete
 | 
				
			||||||
            Assert.Equal(0, orm.Delete<EnumTestMap>().Where(a => a.id == item.id && a.enumnullable_to_int == ToStringMapEnum.<EFBFBD>й<EFBFBD><EFBFBD><EFBFBD>).ExecuteAffrows());
 | 
					            Assert.Equal(0, orm.Delete<EnumTestMap>().Where(a => a.id == item.id && a.enumnullable_to_int == ToStringMapEnum.中国人).ExecuteAffrows());
 | 
				
			||||||
            Assert.Equal(0, orm.Delete<EnumTestMap>().Where(a => a.id == item.id && a.enumnullable_to_int == ToStringMapEnum.<EFBFBD><EFBFBD><EFBFBD><EFBFBD>).ExecuteAffrows());
 | 
					            Assert.Equal(0, orm.Delete<EnumTestMap>().Where(a => a.id == item.id && a.enumnullable_to_int == ToStringMapEnum.香港).ExecuteAffrows());
 | 
				
			||||||
            Assert.Equal(1, orm.Delete<EnumTestMap>().Where(a => a.id == item.id && a.enumnullable_to_int == null).ExecuteAffrows());
 | 
					            Assert.Equal(1, orm.Delete<EnumTestMap>().Where(a => a.id == item.id && a.enumnullable_to_int == null).ExecuteAffrows());
 | 
				
			||||||
            Assert.Null(orm.Select<EnumTestMap>().Where(a => a.id == item.id).First());
 | 
					            Assert.Null(orm.Select<EnumTestMap>().Where(a => a.id == item.id).First());
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -6337,3 +6337,115 @@
 | 
				
			|||||||
        </member>
 | 
					        </member>
 | 
				
			||||||
    </members>
 | 
					    </members>
 | 
				
			||||||
</doc>
 | 
					</doc>
 | 
				
			||||||
 | 
					`0})">
 | 
				
			||||||
 | 
					            <summary>
 | 
				
			||||||
 | 
					            插入数据,传入实体集合
 | 
				
			||||||
 | 
					            </summary>
 | 
				
			||||||
 | 
					            <typeparam name="T1"></typeparam>
 | 
				
			||||||
 | 
					            <param name="source"></param>
 | 
				
			||||||
 | 
					            <returns></returns>
 | 
				
			||||||
 | 
					        </member>
 | 
				
			||||||
 | 
					        <member name="M:IFreeSql.InsertOrUpdate``1">
 | 
				
			||||||
 | 
					            <summary>
 | 
				
			||||||
 | 
					            插入或更新数据,此功能依赖数据库特性(低版本可能不支持),参考如下:<para></para>
 | 
				
			||||||
 | 
					            MySql 5.6+: on duplicate key update<para></para>
 | 
				
			||||||
 | 
					            PostgreSQL 9.4+: on conflict do update<para></para>
 | 
				
			||||||
 | 
					            SqlServer 2008+: merge into<para></para>
 | 
				
			||||||
 | 
					            Oracle 11+: merge into<para></para>
 | 
				
			||||||
 | 
					            Sqlite: replace into<para></para>
 | 
				
			||||||
 | 
					            达梦: merge into<para></para>
 | 
				
			||||||
 | 
					            人大金仓:on conflict do update<para></para>
 | 
				
			||||||
 | 
					            神通:merge into<para></para>
 | 
				
			||||||
 | 
					            MsAccess:不支持<para></para>
 | 
				
			||||||
 | 
					            注意区别:FreeSql.Repository 仓储也有 InsertOrUpdate 方法(不依赖数据库特性)
 | 
				
			||||||
 | 
					            </summary>
 | 
				
			||||||
 | 
					            <typeparam name="T1"></typeparam>
 | 
				
			||||||
 | 
					            <returns></returns>
 | 
				
			||||||
 | 
					        </member>
 | 
				
			||||||
 | 
					        <member name="M:IFreeSql.Update``1">
 | 
				
			||||||
 | 
					            <summary>
 | 
				
			||||||
 | 
					            修改数据
 | 
				
			||||||
 | 
					            </summary>
 | 
				
			||||||
 | 
					            <typeparam name="T1"></typeparam>
 | 
				
			||||||
 | 
					            <returns></returns>
 | 
				
			||||||
 | 
					        </member>
 | 
				
			||||||
 | 
					        <member name="M:IFreeSql.Update``1(System.Object)">
 | 
				
			||||||
 | 
					            <summary>
 | 
				
			||||||
 | 
					            修改数据,传入动态条件,如:主键值 | new[]{主键值1,主键值2} | TEntity1 | new[]{TEntity1,TEntity2} | new{id=1}
 | 
				
			||||||
 | 
					            </summary>
 | 
				
			||||||
 | 
					            <typeparam name="T1"></typeparam>
 | 
				
			||||||
 | 
					            <param name="dywhere">主键值、主键值集合、实体、实体集合、匿名对象、匿名对象集合</param>
 | 
				
			||||||
 | 
					            <returns></returns>
 | 
				
			||||||
 | 
					        </member>
 | 
				
			||||||
 | 
					        <member name="M:IFreeSql.Select``1">
 | 
				
			||||||
 | 
					            <summary>
 | 
				
			||||||
 | 
					            查询数据
 | 
				
			||||||
 | 
					            </summary>
 | 
				
			||||||
 | 
					            <typeparam name="T1"></typeparam>
 | 
				
			||||||
 | 
					            <returns></returns>
 | 
				
			||||||
 | 
					        </member>
 | 
				
			||||||
 | 
					        <member name="M:IFreeSql.Select``1(System.Object)">
 | 
				
			||||||
 | 
					            <summary>
 | 
				
			||||||
 | 
					            查询数据,传入动态条件,如:主键值 | new[]{主键值1,主键值2} | TEntity1 | new[]{TEntity1,TEntity2} | new{id=1}
 | 
				
			||||||
 | 
					            </summary>
 | 
				
			||||||
 | 
					            <typeparam name="T1"></typeparam>
 | 
				
			||||||
 | 
					            <param name="dywhere">主键值、主键值集合、实体、实体集合、匿名对象、匿名对象集合</param>
 | 
				
			||||||
 | 
					            <returns></returns>
 | 
				
			||||||
 | 
					        </member>
 | 
				
			||||||
 | 
					        <member name="M:IFreeSql.Delete``1">
 | 
				
			||||||
 | 
					            <summary>
 | 
				
			||||||
 | 
					            删除数据
 | 
				
			||||||
 | 
					            </summary>
 | 
				
			||||||
 | 
					            <typeparam name="T1"></typeparam>
 | 
				
			||||||
 | 
					            <returns></returns>
 | 
				
			||||||
 | 
					        </member>
 | 
				
			||||||
 | 
					        <member name="M:IFreeSql.Delete``1(System.Object)">
 | 
				
			||||||
 | 
					            <summary>
 | 
				
			||||||
 | 
					            删除数据,传入动态条件,如:主键值 | new[]{主键值1,主键值2} | TEntity1 | new[]{TEntity1,TEntity2} | new{id=1}
 | 
				
			||||||
 | 
					            </summary>
 | 
				
			||||||
 | 
					            <typeparam name="T1"></typeparam>
 | 
				
			||||||
 | 
					            <param name="dywhere">主键值、主键值集合、实体、实体集合、匿名对象、匿名对象集合</param>
 | 
				
			||||||
 | 
					            <returns></returns>
 | 
				
			||||||
 | 
					        </member>
 | 
				
			||||||
 | 
					        <member name="M:IFreeSql.Transaction(System.Action)">
 | 
				
			||||||
 | 
					            <summary>
 | 
				
			||||||
 | 
					            开启事务(不支持异步)<para></para>
 | 
				
			||||||
 | 
					            v1.5.0 关闭了线程事务超时自动提交的机制
 | 
				
			||||||
 | 
					            </summary>
 | 
				
			||||||
 | 
					            <param name="handler">事务体 () => {}</param>
 | 
				
			||||||
 | 
					        </member>
 | 
				
			||||||
 | 
					        <member name="M:IFreeSql.Transaction(System.Data.IsolationLevel,System.Action)">
 | 
				
			||||||
 | 
					            <summary>
 | 
				
			||||||
 | 
					            开启事务(不支持异步)<para></para>
 | 
				
			||||||
 | 
					            v1.5.0 关闭了线程事务超时自动提交的机制
 | 
				
			||||||
 | 
					            </summary>
 | 
				
			||||||
 | 
					            <param name="isolationLevel"></param>
 | 
				
			||||||
 | 
					            <param name="handler">事务体 () => {}</param>
 | 
				
			||||||
 | 
					        </member>
 | 
				
			||||||
 | 
					        <member name="P:IFreeSql.Ado">
 | 
				
			||||||
 | 
					            <summary>
 | 
				
			||||||
 | 
					            数据库访问对象
 | 
				
			||||||
 | 
					            </summary>
 | 
				
			||||||
 | 
					        </member>
 | 
				
			||||||
 | 
					        <member name="P:IFreeSql.Aop">
 | 
				
			||||||
 | 
					            <summary>
 | 
				
			||||||
 | 
					            所有拦截方法都在这里
 | 
				
			||||||
 | 
					            </summary>
 | 
				
			||||||
 | 
					        </member>
 | 
				
			||||||
 | 
					        <member name="P:IFreeSql.CodeFirst">
 | 
				
			||||||
 | 
					            <summary>
 | 
				
			||||||
 | 
					            CodeFirst 模式开发相关方法
 | 
				
			||||||
 | 
					            </summary>
 | 
				
			||||||
 | 
					        </member>
 | 
				
			||||||
 | 
					        <member name="P:IFreeSql.DbFirst">
 | 
				
			||||||
 | 
					            <summary>
 | 
				
			||||||
 | 
					            DbFirst 模式开发相关方法
 | 
				
			||||||
 | 
					            </summary>
 | 
				
			||||||
 | 
					        </member>
 | 
				
			||||||
 | 
					        <member name="P:IFreeSql.GlobalFilter">
 | 
				
			||||||
 | 
					            <summary>
 | 
				
			||||||
 | 
					            全局过滤设置,可默认附加为 Select/Update/Delete 条件
 | 
				
			||||||
 | 
					            </summary>
 | 
				
			||||||
 | 
					        </member>
 | 
				
			||||||
 | 
					    </members>
 | 
				
			||||||
 | 
					</doc>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -25,7 +25,7 @@ namespace FreeSql.Internal
 | 
				
			|||||||
        public ParameterExpression _lambdaParameter;
 | 
					        public ParameterExpression _lambdaParameter;
 | 
				
			||||||
        public ReadAnonymousTypeInfo _map;
 | 
					        public ReadAnonymousTypeInfo _map;
 | 
				
			||||||
        public string _field;
 | 
					        public string _field;
 | 
				
			||||||
        public ReadAnonymousTypeInfo ParseExpMapResult { get; protected set; }
 | 
					        public ReadAnonymousTypeInfo ParseExpMapResult { get; internal protected set; }
 | 
				
			||||||
        public abstract string ParseExp(Expression[] members);
 | 
					        public abstract string ParseExp(Expression[] members);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -859,8 +859,10 @@ namespace FreeSql.Internal
 | 
				
			|||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            Type oldMapType = null;
 | 
					            Type oldMapType = null;
 | 
				
			||||||
 | 
					            if (tsc.diymemexp != null) tsc.diymemexp.ParseExpMapResult = null;
 | 
				
			||||||
            var left = ExpressionLambdaToSql(leftExp, tsc);
 | 
					            var left = ExpressionLambdaToSql(leftExp, tsc);
 | 
				
			||||||
            var leftMapColumn = SearchColumnByField(tsc._tables, tsc.currentTable, left);
 | 
					            var leftMapColumn = SearchColumnByField(tsc._tables, tsc.currentTable, left) ?? 
 | 
				
			||||||
 | 
					                (tsc.diymemexp?.ParseExpMapResult?.Table?.ColumnsByCs.TryGetValue(tsc.diymemexp.ParseExpMapResult.CsName, out var dmcol) == true ? dmcol : null); //group by emum -> MapType(string) #1727
 | 
				
			||||||
            var isLeftMapType = leftMapColumn != null && new[] { "AND", "OR", "*", "/", "+", "-" }.Contains(oper) == false && (leftMapColumn.Attribute.MapType != rightExp.Type || leftMapColumn.CsType != rightExp.Type);
 | 
					            var isLeftMapType = leftMapColumn != null && new[] { "AND", "OR", "*", "/", "+", "-" }.Contains(oper) == false && (leftMapColumn.Attribute.MapType != rightExp.Type || leftMapColumn.CsType != rightExp.Type);
 | 
				
			||||||
            ColumnInfo rightMapColumn = null;
 | 
					            ColumnInfo rightMapColumn = null;
 | 
				
			||||||
            var isRightMapType = false;
 | 
					            var isRightMapType = false;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -130,7 +130,19 @@ namespace FreeSql.Internal.CommonProvider
 | 
				
			|||||||
                                return null;
 | 
					                                return null;
 | 
				
			||||||
                        }
 | 
					                        }
 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
                    return _comonExp.ExpressionLambdaToSql(retExp, new CommonExpression.ExpTSC { _tables = _tables, _tableRule = _select._tableRule, tbtype = SelectTableInfoType.From, isQuoteName = true, isDisableDiyParse = true, style = CommonExpression.ExpressionStyle.Where });
 | 
					                    var tsc = new CommonExpression.ExpTSC { _tables = _tables, _tableRule = _select._tableRule, tbtype = SelectTableInfoType.From, isQuoteName = true, isDisableDiyParse = true, style = CommonExpression.ExpressionStyle.Where };
 | 
				
			||||||
 | 
					                    var result = _comonExp.ExpressionLambdaToSql(retExp, tsc);
 | 
				
			||||||
 | 
					                    //ParseExpMapResult = result
 | 
				
			||||||
 | 
					                    if (tsc.mapColumnTmp != null)
 | 
				
			||||||
 | 
					                        ParseExpMapResult = new ReadAnonymousTypeInfo
 | 
				
			||||||
 | 
					                        {
 | 
				
			||||||
 | 
					                            Property = tsc.mapColumnTmp.Table.Properties[tsc.mapColumnTmp.CsName],
 | 
				
			||||||
 | 
					                            CsName = tsc.mapColumnTmp.CsName,
 | 
				
			||||||
 | 
					                            CsType = tsc.mapColumnTmp.CsType, //dtoProp.PropertyType,
 | 
				
			||||||
 | 
					                            MapType = tsc.mapColumnTmp.Attribute.MapType,
 | 
				
			||||||
 | 
					                            Table = tsc.mapColumnTmp.Table
 | 
				
			||||||
 | 
					                        };
 | 
				
			||||||
 | 
					                    return result;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            return null;
 | 
					            return null;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user