using OrmTest.Models; using SqlSugar; using System; using System.Collections.Generic; using System.Linq; using System.Text; using TCM.Manager.Models; namespace OrmTest.BugTest { public class Bug2 { public SqlSugarClient DB { get { SqlSugarClient db = new SqlSugarClient(new ConnectionConfig() { InitKeyType = InitKeyType.Attribute, ConnectionString = Config.ConnectionString, DbType = DbType.SqlServer, IsAutoCloseConnection = true }); 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"); } 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(); var model = DB.Queryable((a, b, c, d, e, f, g) => new object[]{ JoinType.Left,a.ClientID==b.ClientID, JoinType.Left,a.ClientID==c.ClientID&&c.TournamentID==0, JoinType.Left,a.ClientID==d.ClientID, JoinType.Left,(e.MinVipCredit<=b.VipCredit&&e.MaxVipCredit>=b.VipCredit) && (e.MinConsumeAmount<=b.AccumulatedConsumeAmount&&e.MaxConsumeAmount>=b.AccumulatedConsumeAmount), JoinType.Left,(c.ExperiencePoints>=f.MinExperiencePoints && c.ExperiencePoints f.MaxExperiencePoints && f.UserLevel== 30), JoinType.Left,g.ClientID==a.ClientID }) .WhereIF(true, (a, b, c, d, e, f, g) => a.ClientID == 1) .WhereIF(!string.IsNullOrEmpty("a"), (a, b, c, d, e, f, g) => a.NickName == "a") .Select((a, b, c, d, e, f, g) => new { GoldAmount = SqlFunc.Subqueryable().Where(s => s.TournamentID == 0 && s.ClientID == a.ClientID).Sum(s => SqlFunc.IsNull(SqlFunc.AggregateSum(s.Exposure), 0)) , ClientID = a.ClientID, NickName = a.NickName, UserChannel = a.UserChannel, CountryCode = d.CountryCode, Platform = a.Platform, Email = a.Email, PhoneNumber = a.PhoneNumber, RegisteredTime = a.RegisteredTime, DiamondAmount = SqlFunc.IsNull(g.JewelCount, 0), AccumulatedRechargeAmount = SqlFunc.IsNull(b.AccumulatedRechargeAmount, 0), VipLevel = SqlFunc.IsNull(e.VipLevel, 0), UserLevel = SqlFunc.IsNull(f.UserLevel, 0) }) .With(SqlWith.NoLock) .ToSql(); var _sql = DB.Insertable(new UserInfo { BrandId = -1, UserLevel = 1 }).IgnoreColumns(m => new { m.BlockingTime, m.CreditUpdatetime }).ToSql(); var _sql2 = DB.Insertable(new UserInfo { BrandId = -1, UserLevel = 1 }).IgnoreColumns(m => new { m.UserId }).ToSql(); var _sql3 = DB.Updateable(new UserInfo { BrandId = -1, UserLevel = 1 }).IgnoreColumns(m => new { m.CreditUpdatetime,m.UserId }).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; } } /// /// VmallUser 实体 /// [SugarTable("vmall_user")] public class UserInfo { #region 属性 public int UserId { get; set; } /// /// /// [SugarColumn(ColumnName = "brand_id")] public int BrandId { get; set; } /// /// 用户等级1普通 2高级 0黑名单 /// [SugarColumn(ColumnName = "user_level")] public byte UserLevel { get; set; } /// /// 拉黑时间 /// [SugarColumn(ColumnName = "blocking_time")] public DateTime BlockingTime { get; set; } /// /// /// [SugarColumn(ColumnName = "credit_updatetime")] public DateTime CreditUpdatetime { get; set; } #endregion } }