mirror of
				https://github.com/nsnail/FreeSql.git
				synced 2025-11-04 17:20:49 +08:00 
			
		
		
		
	修复 Convert.ToBoolean bug
This commit is contained in:
		@@ -9,7 +9,7 @@ namespace FreeSql.Tests.DataContext.SqlServer
 | 
			
		||||
		public SqlServerFixture()
 | 
			
		||||
		{
 | 
			
		||||
			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")
 | 
			
		||||
			  .UseAutoSyncStructure(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 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));
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -44,12 +44,12 @@ namespace FreeSql.Tests.SqlServerExpression {
 | 
			
		||||
		[Fact]
 | 
			
		||||
		public void ToBoolean() {
 | 
			
		||||
			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]
 | 
			
		||||
		public void ToByte() {
 | 
			
		||||
			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]
 | 
			
		||||
		public void ToChar() {
 | 
			
		||||
@@ -89,7 +89,7 @@ namespace FreeSql.Tests.SqlServerExpression {
 | 
			
		||||
		[Fact]
 | 
			
		||||
		public void ToSByte() {
 | 
			
		||||
			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]
 | 
			
		||||
		public void ToSingle() {
 | 
			
		||||
 
 | 
			
		||||
@@ -45,11 +45,10 @@ namespace FreeSql.Tests {
 | 
			
		||||
			var queryable = g.mysql.Queryable<TestInfo>().Where(a => a.Id == 1).ToList();
 | 
			
		||||
			
 | 
			
		||||
			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)
 | 
			
		||||
 | 
			
		||||
				.Offset(a.Id)
 | 
			
		||||
				
 | 
			
		||||
				.Any()
 | 
			
		||||
				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)
 | 
			
		||||
					.Any()
 | 
			
		||||
				).Any()
 | 
			
		||||
			).ToList();
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -274,7 +274,7 @@ namespace FreeSql.SqlServer {
 | 
			
		||||
			Func<Expression, string> getExp = exparg => ExpressionLambdaToSql(exparg, _tables, _selectColumnMap, getSelectGroupingMapString, tbtype, isQuoteName);
 | 
			
		||||
			if (exp.Object == null) {
 | 
			
		||||
				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 "ToChar": return $"substring(cast({getExp(exp.Arguments[0])} as nvarchar),1,1)";
 | 
			
		||||
					case "ToDateTime": return $"cast({getExp(exp.Arguments[0])} as datetime)";
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user