修复 Convert.ToBoolean bug

This commit is contained in:
28810 2019-03-15 09:37:27 +08:00
parent f0d8d05886
commit 63c19f8702
5 changed files with 12 additions and 13 deletions

View File

@ -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)

View File

@ -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));
} }

View File

@ -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() {

View File

@ -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();

View File

@ -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)";