From 4d8cb6f64954240bf537f3f2d12d08a8bd45f728 Mon Sep 17 00:00:00 2001 From: sunkaixuan <610262374@qq.com> Date: Tue, 23 May 2017 07:20:58 +0800 Subject: [PATCH] - --- OrmTest/UnitTest/Mapping .cs | 16 +++++++-- .../SqlBuilder/DMLBuilder/QueryBuilder.cs | 2 +- .../QueryableProvider/QueryableProvider.cs | 35 ++++++++++++++----- SqlSugar/Entities/SugarList.cs | 4 +-- SqlSugar/Interface/IQueryable.cs | 3 +- 5 files changed, 45 insertions(+), 15 deletions(-) diff --git a/OrmTest/UnitTest/Mapping .cs b/OrmTest/UnitTest/Mapping .cs index 5f17f84dd..e1252d60e 100644 --- a/OrmTest/UnitTest/Mapping .cs +++ b/OrmTest/UnitTest/Mapping .cs @@ -19,9 +19,21 @@ namespace OrmTest.UnitTest public void Init() { var db = GetInstance(); - db.IgnoreColumns.Add("1", "1"); - var s1= db.Queryable().Where(it=>it.Id==1).ToSql(); + var t1= db.Queryable().Where(it=>it.Id==1).ToSql(); + base.Check("SELECT [ID],[SchoolId],[Name],[CreateTime] FROM [STudent] WHERE ( [ID] = @Id0 ) ", null, t1.Key, null,"Mapping t1 error"); + db.MappingColumns.Add("Id", "id", "School"); + var t2 = db.Queryable((st, sc) => new object[] { + JoinType.Left,st.SchoolId==sc.Id + }) + .Where(st => st.Id == 1) + .Where(sc => sc.Id == 1) + .Where((sc, st) => sc.Id == st.Id) + .GroupBy(st => st.Id) + .GroupBy(sc => sc.Id).OrderBy(st => st.Id,OrderByType.Asc) + .Select((st,sc)=> new { stid=st.Id,scid=sc.Id}).ToSql(); + base.Check(@"SELECT [st].[ID] AS [stid] , [sc].[id] AS [scid] FROM [STudent] st Left JOIN School sc ON ( [st].[SchoolId] =[sc].[id]) WHERE ( [st].[ID] = @Id0 ) AND ( [sc].[id] = @Id1 ) AND ( [sc].[id] = [st].[ID] )GROUP BY [st].[ID],[sc].[id]ORDER BY [st].[ID] ASC ", + null, t2.Key, null, " Mapping t2 error"); var x2 = GetInstance(); } diff --git a/SqlSugar/Abstract/Core/SqlBuilder/DMLBuilder/QueryBuilder.cs b/SqlSugar/Abstract/Core/SqlBuilder/DMLBuilder/QueryBuilder.cs index 524f367ad..d5e433d07 100644 --- a/SqlSugar/Abstract/Core/SqlBuilder/DMLBuilder/QueryBuilder.cs +++ b/SqlSugar/Abstract/Core/SqlBuilder/DMLBuilder/QueryBuilder.cs @@ -289,7 +289,7 @@ namespace SqlSugar { pre = Builder.GetTranslationColumnName(TableShortName) + "."; } - reval = string.Join(",", this.Context.EntityProvider.GetEntityInfo(this.EntityType).Columns.Where(it=>!it.IsIgnore).Select(it => pre + Builder.GetTranslationColumnName(it.PropertyName))); + reval = string.Join(",", this.Context.EntityProvider.GetEntityInfo(this.EntityType).Columns.Where(it=>!it.IsIgnore).Select(it => pre + Builder.GetTranslationColumnName(it.EnitytName,it.PropertyName))); } else { diff --git a/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs b/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs index 1640fa79f..0a96d6c5c 100644 --- a/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs +++ b/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs @@ -20,11 +20,13 @@ namespace SqlSugar { get { - return this.SqlBuilder.QueryBuilder; + return this.SqlBuilder.QueryBuilder; } } - public EntityInfo EntityInfo { - get { + public EntityInfo EntityInfo + { + get + { return this.Context.EntityProvider.GetEntityInfo(); } } @@ -110,7 +112,8 @@ namespace SqlSugar return this; } - public ISugarQueryable Having(Expression> expression) { + public ISugarQueryable Having(Expression> expression) + { this._Having(expression); return this; } @@ -204,7 +207,7 @@ namespace SqlSugar Where("1=2 "); return this; } - var pks = GetPrimaryKeys().Select(it=> SqlBuilder.GetTranslationTableName(it)).ToList(); + var pks = GetPrimaryKeys().Select(it => SqlBuilder.GetTranslationTableName(it)).ToList(); Check.Exception(pks == null || pks.Count != 1, "Queryable.In(params object[] pkValues): Only one primary key"); string filed = pks.FirstOrDefault(); string shortName = QueryBuilder.TableShortName == null ? null : (QueryBuilder.TableShortName + "."); @@ -285,10 +288,15 @@ namespace SqlSugar return this; } - public ISugarQueryable OrderBy(Expression> expression, OrderByType type = OrderByType.Asc) + public ISugarQueryable OrderBy(Expression> expression, OrderByType type = OrderByType.Asc) { this._OrderBy(expression, type); - return this; + var reval = InstanceFactory.GetQueryable(this.Context.CurrentConnectionConfig); + reval.Context = this.Context; + reval.SqlBuilder = this.SqlBuilder; + reval.SqlBuilder.QueryBuilder.Parameters = QueryBuilder.Parameters; + reval.SqlBuilder.QueryBuilder.SelectValue = expression; + return reval; } public ISugarQueryable GroupBy(Expression> expression) @@ -296,7 +304,16 @@ namespace SqlSugar _GroupBy(expression); return this; } - + public ISugarQueryable GroupBy(Expression> expression) + { + _GroupBy(expression); + var reval = InstanceFactory.GetQueryable(this.Context.CurrentConnectionConfig); + reval.Context = this.Context; + reval.SqlBuilder = this.SqlBuilder; + reval.SqlBuilder.QueryBuilder.Parameters = QueryBuilder.Parameters; + reval.SqlBuilder.QueryBuilder.SelectValue = expression; + return reval; + } public ISugarQueryable GroupBy(string groupFileds) { var croupByValue = QueryBuilder.GroupByValue; @@ -607,7 +624,7 @@ namespace SqlSugar var tType = typeof(TResult); if (tType.IsAnonymousType() || isComplexModel) { - result= this.Context.RewritableMethods.DataReaderToDynamicList(dataReader); + result = this.Context.RewritableMethods.DataReaderToDynamicList(dataReader); } else { diff --git a/SqlSugar/Entities/SugarList.cs b/SqlSugar/Entities/SugarList.cs index a2d912a3a..e49775681 100644 --- a/SqlSugar/Entities/SugarList.cs +++ b/SqlSugar/Entities/SugarList.cs @@ -27,7 +27,7 @@ namespace SqlSugar { public void Add(string propertyName, string EntityName) { - this.RemoveAll(it => it.EntityPropertyName.Equals(propertyName, StringComparison.CurrentCultureIgnoreCase)); + this.RemoveAll(it =>it.EntityName==EntityName&&it.EntityPropertyName.Equals(propertyName, StringComparison.CurrentCultureIgnoreCase)); this.Add(new IgnoreComumn() { EntityPropertyName = propertyName, EntityName = EntityName }); } @@ -41,7 +41,7 @@ namespace SqlSugar { public void Add(string propertyName, string dbColumnName, string entityName) { - this.RemoveAll(it => it.PropertyName.Equals(propertyName, StringComparison.CurrentCultureIgnoreCase)); + this.RemoveAll(it =>it.EntityName==entityName &&it.PropertyName.Equals(propertyName, StringComparison.CurrentCultureIgnoreCase)); this.Add(new MappingColumn() { PropertyName = propertyName, DbColumnName = dbColumnName, EntityName = entityName }); } public new void Clear() diff --git a/SqlSugar/Interface/IQueryable.cs b/SqlSugar/Interface/IQueryable.cs index 16871e5fa..3574b37a1 100644 --- a/SqlSugar/Interface/IQueryable.cs +++ b/SqlSugar/Interface/IQueryable.cs @@ -48,9 +48,10 @@ namespace SqlSugar ISugarQueryable OrderBy(string orderFileds); ISugarQueryable OrderBy(Expression> expression, OrderByType type = OrderByType.Asc); - ISugarQueryable OrderBy(Expression> expression, OrderByType type = OrderByType.Asc); + ISugarQueryable OrderBy(Expression> expression, OrderByType type = OrderByType.Asc); ISugarQueryable GroupBy(Expression> expression); + ISugarQueryable GroupBy(Expression> expression); ISugarQueryable GroupBy(string groupFileds); ISugarQueryable Skip(int index);