mirror of
				https://github.com/nsnail/FreeSql.git
				synced 2025-11-04 09:15:27 +08:00 
			
		
		
		
	修复 Convert.ToBoolean bug
This commit is contained in:
		@@ -9,7 +9,7 @@ namespace FreeSql.Tests.DataContext.SqlServer
 | 
				
			|||||||
		public SqlServerFixture()
 | 
							public SqlServerFixture()
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			sqlServerLazy = new Lazy<IFreeSql>(() => new FreeSql.FreeSqlBuilder()
 | 
								sqlServerLazy = new Lazy<IFreeSql>(() => new FreeSql.FreeSqlBuilder()
 | 
				
			||||||
			  .UseConnectionString(FreeSql.DataType.SqlServer, "Data Source=.;Integrated Security=True;Initial Catalog=cms;Pooling=true;Max Pool Size=10")
 | 
								  .UseConnectionString(FreeSql.DataType.SqlServer, "Data Source=.;Integrated Security=True;Initial Catalog=freesqlTest;Pooling=true;Max Pool Size=10")
 | 
				
			||||||
			  //.UseConnectionString(FreeSql.DataType.SqlServer, "Data Source=(localdb)\\mssqllocaldb;Integrated Security=True;Initial Catalog=cms;Pooling=true;Max Pool Size=10")
 | 
								  //.UseConnectionString(FreeSql.DataType.SqlServer, "Data Source=(localdb)\\mssqllocaldb;Integrated Security=True;Initial Catalog=cms;Pooling=true;Max Pool Size=10")
 | 
				
			||||||
			  .UseAutoSyncStructure(true)
 | 
								  .UseAutoSyncStructure(true)
 | 
				
			||||||
			  .UseLazyLoading(true)
 | 
								  .UseLazyLoading(true)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -66,11 +66,11 @@ namespace FreeSql.Tests.SqlServer {
 | 
				
			|||||||
			var tn1 = _sqlserverFixture.SqlServer.Select<xxx>().Where(a => a.Id > 0).Where(b => b.Title != null).Page(1, 3).ToList(a => a.Id);
 | 
								var tn1 = _sqlserverFixture.SqlServer.Select<xxx>().Where(a => a.Id > 0).Where(b => b.Title != null).Page(1, 3).ToList(a => a.Id);
 | 
				
			||||||
			var tn2 = _sqlserverFixture.SqlServer.Select<xxx>().Where(a => a.Id > 0).Where(b => b.Title != null).Page(2, 3).ToList(a => a.Id);
 | 
								var tn2 = _sqlserverFixture.SqlServer.Select<xxx>().Where(a => a.Id > 0).Where(b => b.Title != null).Page(2, 3).ToList(a => a.Id);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			var t3 = _sqlserverFixture.SqlServer.Ado.Query<xxx>("select * from song");
 | 
								var t3 = _sqlserverFixture.SqlServer.Ado.Query<xxx>("select * from xxx");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			var t4 = _sqlserverFixture.SqlServer.Ado.Query<(int, string, string, DateTime)>("select * from song");
 | 
								var t4 = _sqlserverFixture.SqlServer.Ado.Query<(int, int, string, string DateTime)>("select * from xxx");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			var t5 = _sqlserverFixture.SqlServer.Ado.Query<dynamic>(System.Data.CommandType.Text, "select * from song where Id = @Id", 
 | 
								var t5 = _sqlserverFixture.SqlServer.Ado.Query<dynamic>(System.Data.CommandType.Text, "select * from xxx where Id = @Id", 
 | 
				
			||||||
				new System.Data.SqlClient.SqlParameter("Id", 1));
 | 
									new System.Data.SqlClient.SqlParameter("Id", 1));
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -44,12 +44,12 @@ namespace FreeSql.Tests.SqlServerExpression {
 | 
				
			|||||||
		[Fact]
 | 
							[Fact]
 | 
				
			||||||
		public void ToBoolean() {
 | 
							public void ToBoolean() {
 | 
				
			||||||
			var data = new List<object>();
 | 
								var data = new List<object>();
 | 
				
			||||||
			data.Add(select.Where(a => (Convert.ToBoolean(a.Clicks) ? 1 : 2) > 0).ToList());
 | 
								data.Add(select.Where(a => (Convert.ToBoolean(a.Clicks) ? 1 : 0) > 0).ToList());
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		[Fact]
 | 
							[Fact]
 | 
				
			||||||
		public void ToByte() {
 | 
							public void ToByte() {
 | 
				
			||||||
			var data = new List<object>();
 | 
								var data = new List<object>();
 | 
				
			||||||
			data.Add(select.Where(a => Convert.ToByte(a.Clicks) > 0).ToList());
 | 
								data.Add(select.Where(a => Convert.ToByte(a.Clicks % 255) > 0).ToList());
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		[Fact]
 | 
							[Fact]
 | 
				
			||||||
		public void ToChar() {
 | 
							public void ToChar() {
 | 
				
			||||||
@@ -89,7 +89,7 @@ namespace FreeSql.Tests.SqlServerExpression {
 | 
				
			|||||||
		[Fact]
 | 
							[Fact]
 | 
				
			||||||
		public void ToSByte() {
 | 
							public void ToSByte() {
 | 
				
			||||||
			var data = new List<object>();
 | 
								var data = new List<object>();
 | 
				
			||||||
			data.Add(select.Where(a => Convert.ToSByte(a.Clicks) > 0).ToList());
 | 
								data.Add(select.Where(a => Convert.ToSByte(a.Clicks % 128) > 0).ToList());
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		[Fact]
 | 
							[Fact]
 | 
				
			||||||
		public void ToSingle() {
 | 
							public void ToSingle() {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -45,11 +45,10 @@ namespace FreeSql.Tests {
 | 
				
			|||||||
			var queryable = g.mysql.Queryable<TestInfo>().Where(a => a.Id == 1).ToList();
 | 
								var queryable = g.mysql.Queryable<TestInfo>().Where(a => a.Id == 1).ToList();
 | 
				
			||||||
			
 | 
								
 | 
				
			||||||
			var sql2222 = select.Where(a => 
 | 
								var sql2222 = select.Where(a => 
 | 
				
			||||||
				select.Where(b => b.Id == a.Id && select.Where(c => c.Id == b.Id).Where(d => d.Id == a.Id).Where(e => e.Id == b.Id)
 | 
									select.Where(b => b.Id == a.Id && 
 | 
				
			||||||
 | 
										select.Where(c => c.Id == b.Id).Where(d => d.Id == a.Id).Where(e => e.Id == b.Id)
 | 
				
			||||||
				.Offset(a.Id)
 | 
										.Offset(a.Id)
 | 
				
			||||||
				
 | 
										.Any()
 | 
				
			||||||
				.Any()
 | 
					 | 
				
			||||||
				).Any()
 | 
									).Any()
 | 
				
			||||||
			).ToList();
 | 
								).ToList();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -274,7 +274,7 @@ namespace FreeSql.SqlServer {
 | 
				
			|||||||
			Func<Expression, string> getExp = exparg => ExpressionLambdaToSql(exparg, _tables, _selectColumnMap, getSelectGroupingMapString, tbtype, isQuoteName);
 | 
								Func<Expression, string> getExp = exparg => ExpressionLambdaToSql(exparg, _tables, _selectColumnMap, getSelectGroupingMapString, tbtype, isQuoteName);
 | 
				
			||||||
			if (exp.Object == null) {
 | 
								if (exp.Object == null) {
 | 
				
			||||||
				switch (exp.Method.Name) {
 | 
									switch (exp.Method.Name) {
 | 
				
			||||||
					case "ToBoolean": return $"({getExp(exp.Arguments[0])} not in ('0','false'))";
 | 
										case "ToBoolean": return $"(cast({getExp(exp.Arguments[0])} as varchar) not in ('0','false'))";
 | 
				
			||||||
					case "ToByte": return $"cast({getExp(exp.Arguments[0])} as tinyint)";
 | 
										case "ToByte": return $"cast({getExp(exp.Arguments[0])} as tinyint)";
 | 
				
			||||||
					case "ToChar": return $"substring(cast({getExp(exp.Arguments[0])} as nvarchar),1,1)";
 | 
										case "ToChar": return $"substring(cast({getExp(exp.Arguments[0])} as nvarchar),1,1)";
 | 
				
			||||||
					case "ToDateTime": return $"cast({getExp(exp.Arguments[0])} as datetime)";
 | 
										case "ToDateTime": return $"cast({getExp(exp.Arguments[0])} as datetime)";
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user