diff --git a/Src/Asp.Net/SqlServerTest/BugTest/Bug2.cs b/Src/Asp.Net/SqlServerTest/BugTest/Bug2.cs index 997c051d7..9fa4eccc4 100644 --- a/Src/Asp.Net/SqlServerTest/BugTest/Bug2.cs +++ b/Src/Asp.Net/SqlServerTest/BugTest/Bug2.cs @@ -9,9 +9,10 @@ namespace OrmTest.BugTest { public class Bug2 { - public SqlSugarClient DB + public SqlSugarClient DB { - get { + get + { SqlSugarClient db = new SqlSugarClient(new ConnectionConfig() { InitKeyType = InitKeyType.Attribute, @@ -22,15 +23,71 @@ namespace OrmTest.BugTest return db; } } - public void Init() { - var x2= DB.Queryable().Where(x => x.Id == SqlFunc.Subqueryable().Where(y => y.Id == SqlFunc.Subqueryable().Where(yy => y.Id == x.Id).Select(yy => yy.Id)).Select(y => y.Id)).ToSql(); - if (!x2.Key.Contains("STudent")) { - // throw new Exception("bug2 error"); + public void Init() + { + var x2 = DB.Queryable().Where(x => x.Id == SqlFunc.Subqueryable().Where(y => y.Id == SqlFunc.Subqueryable().Where(yy => y.Id == x.Id).Select(yy => yy.Id)).Select(y => y.Id)).ToSql(); + if (!x2.Key.Contains("STudent")) + { + // throw new Exception("bug2 error"); } + + + + var UserNameOrName = "111"; + var OrganizationUnitId = 0; + var RoleId = 0; + var sql = DB.Queryable().//一对多的子查询 + WhereIF(!string.IsNullOrWhiteSpace(UserNameOrName), t1 => t1.Name.Contains(UserNameOrName)). + Where(t1 => + SqlFunc.Subqueryable(). + Where(t2 => t2.UserId == t1.Id). + WhereIF(OrganizationUnitId > 0, t2 => t2.OrganizationUnitId == OrganizationUnitId).Any()) + // Where(t1 => SqlFunc.Subqueryable(). + //Where(t3 => t3.UserId == t1.Id). + //WhereIF(RoleId > 0, t3 => t3.RoleId == RoleId).Any()) + .Select(t1 => new User { Id = SqlFunc.GetSelfAndAutoFill(t1.Id) }).ToSql(); + } } - + /// + ///用户信息表 + /// + public partial class User + { + /// + /// 描述:主键 + /// 默认值: + /// 是否可空: False + /// + [SugarColumn(IsPrimaryKey = true, IsIdentity = true)] + public long Id { get; set; } + + public string Name { get; set; } + } + + public partial class UserOrganizationUnit + { + [SugarColumn(IsPrimaryKey = true, IsIdentity = true)] + public long Id { get; set; } + + public long UserId { get; set; } + + public long OrganizationUnitId { get; set; } + + } + + /// + ///用户角色关系表 + /// + public partial class UserRole + { + [SugarColumn(IsPrimaryKey = true, IsIdentity = true)] + public long Id { get; set; } + + public long UserId { get; set; } + + public int RoleId { get; set; } + } +} - -} \ No newline at end of file diff --git a/Src/Asp.Net/SqlSugar/ExpressionsToSql/Subquery/Items/SubWhereIF.cs b/Src/Asp.Net/SqlSugar/ExpressionsToSql/Subquery/Items/SubWhereIF.cs index f1d3b8623..1e266e1de 100644 --- a/Src/Asp.Net/SqlSugar/ExpressionsToSql/Subquery/Items/SubWhereIF.cs +++ b/Src/Asp.Net/SqlSugar/ExpressionsToSql/Subquery/Items/SubWhereIF.cs @@ -50,7 +50,7 @@ namespace SqlSugar } var isWhere= Convert.ToBoolean(value); if (!Convert.ToBoolean(isWhere)) { - return ""; + return "WHERE 1=1 "; } var argExp = exp.Arguments[1]; var result = "WHERE " + SubTools.GetMethodValue(Context, argExp, ResolveExpressType.WhereMultiple); ;