From 4f140d72726989fd17d57470a6bcbd63350a27d6 Mon Sep 17 00:00:00 2001 From: sunkaixuna <610262374@qq.com> Date: Tue, 12 Oct 2021 19:43:57 +0800 Subject: [PATCH] Update Core --- .../QueryableProvider/QueryableProvider.cs | 129 +++++++++++++++++- .../SqlSugar/Interface/IQueryable.cs | 13 +- .../SqlSugar/Interface/ISimpleClient.cs | 2 + .../Dm/DbMaintenance/DmDbMaintenance.cs | 8 +- .../SqlSeverTest/SqlSugar/SimpleClient.cs | 8 ++ 5 files changed, 148 insertions(+), 12 deletions(-) diff --git a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs index 4091d06b1..9955e59a6 100644 --- a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs +++ b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs @@ -48,15 +48,26 @@ namespace SqlSugar } public ISugarQueryable LeftJoin(Expression> joinExpression) { + this.Context.InitMappingInfo(); var result = InstanceFactory.GetQueryable(this.Context.CurrentConnectionConfig); result.SqlBuilder = this.SqlBuilder; result.Context = this.Context; result.QueryBuilder.JoinQueryInfos.Add(GetJoinInfo(joinExpression,JoinType.Left)); return result; } + public ISugarQueryable RightJoin(Expression> joinExpression) + { + this.Context.InitMappingInfo(); + var result = InstanceFactory.GetQueryable(this.Context.CurrentConnectionConfig); + result.SqlBuilder = this.SqlBuilder; + result.Context = this.Context; + result.QueryBuilder.JoinQueryInfos.Add(GetJoinInfo(joinExpression, JoinType.Right)); + return result; + } public ISugarQueryable InnerJoin(Expression> joinExpression) { + this.Context.InitMappingInfo(); var result = InstanceFactory.GetQueryable(this.Context.CurrentConnectionConfig); result.SqlBuilder = this.SqlBuilder; result.Context = this.Context; @@ -1281,7 +1292,7 @@ namespace SqlSugar } else if (result.Count == 2) { - Check.Exception(true, ".Single() result must not exceed one . You can use.First()"); + Check.Exception(true, ErrorMessage.GetThrowMessage(".Single() result must not exceed one . You can use.First()", "使用single查询结果集不能大于1,适合主键查询,如果大于1你可以使用Queryable.First")); return default(T); } else @@ -2492,15 +2503,25 @@ namespace SqlSugar { public ISugarQueryable LeftJoin(Expression> joinExpression) { + this.Context.InitMappingInfo(); var result = InstanceFactory.GetQueryable(this.Context.CurrentConnectionConfig); result.SqlBuilder = this.SqlBuilder; result.Context = this.Context; result.QueryBuilder.JoinQueryInfos.Add(GetJoinInfo(joinExpression, JoinType.Left)); return result; } - + public ISugarQueryable RightJoin(Expression> joinExpression) + { + this.Context.InitMappingInfo(); + var result = InstanceFactory.GetQueryable(this.Context.CurrentConnectionConfig); + result.SqlBuilder = this.SqlBuilder; + result.Context = this.Context; + result.QueryBuilder.JoinQueryInfos.Add(GetJoinInfo(joinExpression, JoinType.Right)); + return result; + } public ISugarQueryable InnerJoin(Expression> joinExpression) { + this.Context.InitMappingInfo(); var result = InstanceFactory.GetQueryable(this.Context.CurrentConnectionConfig); result.SqlBuilder = this.SqlBuilder; result.Context = this.Context; @@ -2839,15 +2860,27 @@ namespace SqlSugar { public ISugarQueryable LeftJoin(Expression> joinExpression) { + this.Context.InitMappingInfo(); var result = InstanceFactory.GetQueryable(this.Context.CurrentConnectionConfig); result.SqlBuilder = this.SqlBuilder; result.Context = this.Context; result.QueryBuilder.JoinQueryInfos.Add(GetJoinInfo(joinExpression, JoinType.Left)); return result; } + public ISugarQueryable RightJoin(Expression> joinExpression) + { + this.Context.InitMappingInfo(); + var result = InstanceFactory.GetQueryable(this.Context.CurrentConnectionConfig); + result.SqlBuilder = this.SqlBuilder; + result.Context = this.Context; + result.QueryBuilder.JoinQueryInfos.Add(GetJoinInfo(joinExpression, JoinType.Right)); + return result; + } + public ISugarQueryable InnerJoin(Expression> joinExpression) { + this.Context.InitMappingInfo(); var result = InstanceFactory.GetQueryable(this.Context.CurrentConnectionConfig); result.SqlBuilder = this.SqlBuilder; result.Context = this.Context; @@ -3249,15 +3282,26 @@ namespace SqlSugar { public ISugarQueryable LeftJoin(Expression> joinExpression) { + this.Context.InitMappingInfo(); var result = InstanceFactory.GetQueryable(this.Context.CurrentConnectionConfig); result.SqlBuilder = this.SqlBuilder; result.Context = this.Context; result.QueryBuilder.JoinQueryInfos.Add(GetJoinInfo(joinExpression, JoinType.Left)); return result; } + public ISugarQueryable RightJoin(Expression> joinExpression) + { + this.Context.InitMappingInfo(); + var result = InstanceFactory.GetQueryable(this.Context.CurrentConnectionConfig); + result.SqlBuilder = this.SqlBuilder; + result.Context = this.Context; + result.QueryBuilder.JoinQueryInfos.Add(GetJoinInfo(joinExpression, JoinType.Right)); + return result; + } public ISugarQueryable InnerJoin(Expression> joinExpression) { + this.Context.InitMappingInfo(); var result = InstanceFactory.GetQueryable(this.Context.CurrentConnectionConfig); result.SqlBuilder = this.SqlBuilder; result.Context = this.Context; @@ -3701,15 +3745,26 @@ namespace SqlSugar { public ISugarQueryable LeftJoin(Expression> joinExpression) { + this.Context.InitMappingInfo(); var result = InstanceFactory.GetQueryable(this.Context.CurrentConnectionConfig); result.SqlBuilder = this.SqlBuilder; result.Context = this.Context; result.QueryBuilder.JoinQueryInfos.Add(GetJoinInfo(joinExpression, JoinType.Left)); return result; } + public ISugarQueryable RightJoin(Expression> joinExpression) + { + this.Context.InitMappingInfo(); + var result = InstanceFactory.GetQueryable(this.Context.CurrentConnectionConfig); + result.SqlBuilder = this.SqlBuilder; + result.Context = this.Context; + result.QueryBuilder.JoinQueryInfos.Add(GetJoinInfo(joinExpression, JoinType.Right)); + return result; + } public ISugarQueryable InnerJoin(Expression> joinExpression) { + this.Context.InitMappingInfo(); var result = InstanceFactory.GetQueryable(this.Context.CurrentConnectionConfig); result.SqlBuilder = this.SqlBuilder; result.Context = this.Context; @@ -4115,15 +4170,25 @@ namespace SqlSugar { public ISugarQueryable LeftJoin(Expression> joinExpression) { + this.Context.InitMappingInfo(); var result = InstanceFactory.GetQueryable(this.Context.CurrentConnectionConfig); result.SqlBuilder = this.SqlBuilder; result.Context = this.Context; result.QueryBuilder.JoinQueryInfos.Add(GetJoinInfo(joinExpression, JoinType.Left)); return result; } - + public ISugarQueryable RightJoin(Expression> joinExpression) + { + this.Context.InitMappingInfo(); + var result = InstanceFactory.GetQueryable(this.Context.CurrentConnectionConfig); + result.SqlBuilder = this.SqlBuilder; + result.Context = this.Context; + result.QueryBuilder.JoinQueryInfos.Add(GetJoinInfo(joinExpression, JoinType.Right)); + return result; + } public ISugarQueryable InnerJoin(Expression> joinExpression) { + this.Context.InitMappingInfo(); var result = InstanceFactory.GetQueryable(this.Context.CurrentConnectionConfig); result.SqlBuilder = this.SqlBuilder; result.Context = this.Context; @@ -4564,15 +4629,25 @@ namespace SqlSugar { public ISugarQueryable LeftJoin(Expression> joinExpression) { + this.Context.InitMappingInfo(); var result = InstanceFactory.GetQueryable(this.Context.CurrentConnectionConfig); result.SqlBuilder = this.SqlBuilder; result.Context = this.Context; result.QueryBuilder.JoinQueryInfos.Add(GetJoinInfo(joinExpression, JoinType.Left)); return result; } - + public ISugarQueryable RightJoin(Expression> joinExpression) + { + this.Context.InitMappingInfo(); + var result = InstanceFactory.GetQueryable(this.Context.CurrentConnectionConfig); + result.SqlBuilder = this.SqlBuilder; + result.Context = this.Context; + result.QueryBuilder.JoinQueryInfos.Add(GetJoinInfo(joinExpression, JoinType.Right)); + return result; + } public ISugarQueryable InnerJoin(Expression> joinExpression) { + this.Context.InitMappingInfo(); var result = InstanceFactory.GetQueryable(this.Context.CurrentConnectionConfig); result.SqlBuilder = this.SqlBuilder; result.Context = this.Context; @@ -5004,15 +5079,25 @@ namespace SqlSugar { public ISugarQueryable LeftJoin(Expression> joinExpression) { + this.Context.InitMappingInfo(); var result = InstanceFactory.GetQueryable(this.Context.CurrentConnectionConfig); result.SqlBuilder = this.SqlBuilder; result.Context = this.Context; result.QueryBuilder.JoinQueryInfos.Add(GetJoinInfo(joinExpression, JoinType.Left)); return result; } - + public ISugarQueryable RightJoin(Expression> joinExpression) + { + this.Context.InitMappingInfo(); + var result = InstanceFactory.GetQueryable(this.Context.CurrentConnectionConfig); + result.SqlBuilder = this.SqlBuilder; + result.Context = this.Context; + result.QueryBuilder.JoinQueryInfos.Add(GetJoinInfo(joinExpression, JoinType.Right)); + return result; + } public ISugarQueryable InnerJoin(Expression> joinExpression) { + this.Context.InitMappingInfo(); var result = InstanceFactory.GetQueryable(this.Context.CurrentConnectionConfig); result.SqlBuilder = this.SqlBuilder; result.Context = this.Context; @@ -5477,15 +5562,25 @@ namespace SqlSugar { public ISugarQueryable LeftJoin(Expression> joinExpression) { + this.Context.InitMappingInfo(); var result = InstanceFactory.GetQueryable(this.Context.CurrentConnectionConfig); result.SqlBuilder = this.SqlBuilder; result.Context = this.Context; result.QueryBuilder.JoinQueryInfos.Add(GetJoinInfo(joinExpression, JoinType.Left)); return result; } - + public ISugarQueryable RightJoin(Expression> joinExpression) + { + this.Context.InitMappingInfo(); + var result = InstanceFactory.GetQueryable(this.Context.CurrentConnectionConfig); + result.SqlBuilder = this.SqlBuilder; + result.Context = this.Context; + result.QueryBuilder.JoinQueryInfos.Add(GetJoinInfo(joinExpression, JoinType.Right)); + return result; + } public ISugarQueryable InnerJoin(Expression> joinExpression) { + this.Context.InitMappingInfo(); var result = InstanceFactory.GetQueryable(this.Context.CurrentConnectionConfig); result.SqlBuilder = this.SqlBuilder; result.Context = this.Context; @@ -5886,15 +5981,26 @@ namespace SqlSugar { public ISugarQueryable LeftJoin(Expression> joinExpression) { + this.Context.InitMappingInfo(); var result = InstanceFactory.GetQueryable(this.Context.CurrentConnectionConfig); result.SqlBuilder = this.SqlBuilder; result.Context = this.Context; result.QueryBuilder.JoinQueryInfos.Add(GetJoinInfo(joinExpression, JoinType.Left)); return result; } + public ISugarQueryable RightJoin(Expression> joinExpression) + { + this.Context.InitMappingInfo(); + var result = InstanceFactory.GetQueryable(this.Context.CurrentConnectionConfig); + result.SqlBuilder = this.SqlBuilder; + result.Context = this.Context; + result.QueryBuilder.JoinQueryInfos.Add(GetJoinInfo(joinExpression, JoinType.Right)); + return result; + } public ISugarQueryable InnerJoin(Expression> joinExpression) { + this.Context.InitMappingInfo(); var result = InstanceFactory.GetQueryable(this.Context.CurrentConnectionConfig); result.SqlBuilder = this.SqlBuilder; result.Context = this.Context; @@ -6319,15 +6425,26 @@ namespace SqlSugar { public ISugarQueryable LeftJoin(Expression> joinExpression) { + this.Context.InitMappingInfo(); var result = InstanceFactory.GetQueryable(this.Context.CurrentConnectionConfig); result.SqlBuilder = this.SqlBuilder; result.Context = this.Context; result.QueryBuilder.JoinQueryInfos.Add(GetJoinInfo(joinExpression, JoinType.Left)); return result; } + public ISugarQueryable RightJoin(Expression> joinExpression) + { + this.Context.InitMappingInfo(); + var result = InstanceFactory.GetQueryable(this.Context.CurrentConnectionConfig); + result.SqlBuilder = this.SqlBuilder; + result.Context = this.Context; + result.QueryBuilder.JoinQueryInfos.Add(GetJoinInfo(joinExpression, JoinType.Right)); + return result; + } public ISugarQueryable InnerJoin(Expression> joinExpression) { + this.Context.InitMappingInfo(); var result = InstanceFactory.GetQueryable(this.Context.CurrentConnectionConfig); result.SqlBuilder = this.SqlBuilder; result.Context = this.Context; diff --git a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Interface/IQueryable.cs b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Interface/IQueryable.cs index d3a4771bc..0e894654f 100644 --- a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Interface/IQueryable.cs +++ b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Interface/IQueryable.cs @@ -21,6 +21,7 @@ namespace SqlSugar ISugarQueryable With(string withString); ISugarQueryable LeftJoin(Expression> joinExpression); ISugarQueryable InnerJoin(Expression> joinExpression); + ISugarQueryable RightJoin(Expression> joinExpression); ISugarQueryable Filter(string FilterName, bool isDisabledGobalFilter = false); ISugarQueryable Mapper(Action mapperAction); ISugarQueryable Mapper(Expression> expression); @@ -183,7 +184,7 @@ namespace SqlSugar { ISugarQueryable LeftJoin(Expression> joinExpression); ISugarQueryable InnerJoin(Expression> joinExpression); - + ISugarQueryable RightJoin(Expression> joinExpression); #region Where new ISugarQueryable Where(Expression> expression); ISugarQueryable Where(Expression> expression); @@ -271,7 +272,7 @@ namespace SqlSugar { ISugarQueryable LeftJoin(Expression> joinExpression); ISugarQueryable InnerJoin(Expression> joinExpression); - + ISugarQueryable RightJoin(Expression> joinExpression); #region Where new ISugarQueryable Where(Expression> expression); ISugarQueryable Where(Expression> expression); @@ -370,6 +371,7 @@ namespace SqlSugar { ISugarQueryable LeftJoin(Expression> joinExpression); ISugarQueryable InnerJoin(Expression> joinExpression); + ISugarQueryable RightJoin(Expression> joinExpression); #region Where new ISugarQueryable Where(Expression> expression); @@ -476,6 +478,7 @@ namespace SqlSugar { ISugarQueryable LeftJoin(Expression> joinExpression); ISugarQueryable InnerJoin(Expression> joinExpression); + ISugarQueryable RightJoin(Expression> joinExpression); #region Where new ISugarQueryable Where(Expression> expression); @@ -578,6 +581,7 @@ namespace SqlSugar { ISugarQueryable LeftJoin(Expression> joinExpression); ISugarQueryable InnerJoin(Expression> joinExpression); + ISugarQueryable RightJoin(Expression> joinExpression); #region Where new ISugarQueryable Where(Expression> expression); @@ -687,6 +691,7 @@ namespace SqlSugar { ISugarQueryable LeftJoin(Expression> joinExpression); ISugarQueryable InnerJoin(Expression> joinExpression); + ISugarQueryable RightJoin(Expression> joinExpression); #region Where new ISugarQueryable Where(Expression> expression); @@ -795,6 +800,7 @@ namespace SqlSugar { ISugarQueryable LeftJoin(Expression> joinExpression); ISugarQueryable InnerJoin(Expression> joinExpression); + ISugarQueryable RightJoin(Expression> joinExpression); #region Where new ISugarQueryable Where(Expression> expression); @@ -911,6 +917,7 @@ namespace SqlSugar { ISugarQueryable LeftJoin(Expression> joinExpression); ISugarQueryable InnerJoin(Expression> joinExpression); + ISugarQueryable RightJoin(Expression> joinExpression); #region Where new ISugarQueryable Where(Expression> expression); @@ -1005,6 +1012,7 @@ namespace SqlSugar { ISugarQueryable LeftJoin(Expression> joinExpression); ISugarQueryable InnerJoin(Expression> joinExpression); + ISugarQueryable RightJoin(Expression> joinExpression); #region Where new ISugarQueryable Where(Expression> expression); @@ -1104,6 +1112,7 @@ namespace SqlSugar { ISugarQueryable LeftJoin(Expression> joinExpression); ISugarQueryable InnerJoin(Expression> joinExpression); + ISugarQueryable RightJoin(Expression> joinExpression); #region Where new ISugarQueryable Where(Expression> expression); diff --git a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Interface/ISimpleClient.cs b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Interface/ISimpleClient.cs index c46041cb9..cb0c630c0 100644 --- a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Interface/ISimpleClient.cs +++ b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Interface/ISimpleClient.cs @@ -32,6 +32,7 @@ namespace SqlSugar List GetPageList(List conditionalList, PageModel page); List GetPageList(List conditionalList, PageModel page, Expression> orderByExpression = null, OrderByType orderByType = OrderByType.Asc); T GetSingle(Expression> whereExpression); + T GetFirst(Expression> whereExpression); bool Insert(T insertObj); bool InsertRange(List insertObjs); bool InsertRange(T[] insertObjs); @@ -63,6 +64,7 @@ namespace SqlSugar Task> GetPageListAsync(List conditionalList, PageModel page); Task> GetPageListAsync(List conditionalList, PageModel page, Expression> orderByExpression = null, OrderByType orderByType = OrderByType.Asc); Task GetSingleAsync(Expression> whereExpression); + Task GetFirstAsync(Expression> whereExpression); Task InsertAsync(T insertObj); Task InsertRangeAsync(List insertObjs); Task InsertRangeAsync(T[] insertObjs); diff --git a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Realization/Dm/DbMaintenance/DmDbMaintenance.cs b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Realization/Dm/DbMaintenance/DmDbMaintenance.cs index df8719466..b154b214c 100644 --- a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Realization/Dm/DbMaintenance/DmDbMaintenance.cs +++ b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Realization/Dm/DbMaintenance/DmDbMaintenance.cs @@ -458,13 +458,13 @@ namespace SqlSugar } } string sql = GetCreateTableSql(tableName, columns); - string primaryKeyInfo = null; + //string primaryKeyInfo = null; if (columns.Any(it => it.IsPrimarykey) && isCreatePrimaryKey) { - primaryKeyInfo = string.Format(", Primary key({0})", string.Join(",", columns.Where(it => it.IsPrimarykey).Select(it => this.SqlBuilder.GetTranslationColumnName(it.DbColumnName.ToLower())))); - + sql= sql.TrimEnd(')')+ string.Format(", Primary key({0})", string.Join(",", columns.Where(it => it.IsPrimarykey).Select(it => this.SqlBuilder.GetTranslationColumnName(it.DbColumnName.ToLower())))); + sql = sql + ")"; } - sql = sql.Replace("$PrimaryKey", primaryKeyInfo); + //sql = sql.Replace("$PrimaryKey", primaryKeyInfo); this.Context.Ado.ExecuteCommand(sql); return true; } diff --git a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/SimpleClient.cs b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/SimpleClient.cs index f17e11256..7ba82cedc 100644 --- a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/SimpleClient.cs +++ b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/SimpleClient.cs @@ -98,6 +98,10 @@ namespace SqlSugar { return Context.Queryable().Single(whereExpression); } + public T GetFirst(Expression> whereExpression) + { + return Context.Queryable().First(whereExpression); + } public virtual List GetPageList(Expression> whereExpression, PageModel page) { int count = 0; @@ -224,6 +228,10 @@ namespace SqlSugar { return Context.Queryable().SingleAsync(whereExpression); } + public Task GetFirstAsync(Expression> whereExpression) + { + return Context.Queryable().FirstAsync(whereExpression); + } public virtual async Task> GetPageListAsync(Expression> whereExpression, PageModel page) { RefAsync count = 0;