From c1a4e7efdfd1a64d20d95067487e8c12b2a18eb0 Mon Sep 17 00:00:00 2001 From: sunkaixuan <610262374@qq.com> Date: Sun, 25 Jun 2017 07:12:07 +0800 Subject: [PATCH] Update MySql --- Src/Asp.Net/MySqlTest/Program.cs | 2 +- .../QueryableProvider/QueryableProvider.cs | 110 +++++++++--------- .../MySql/Queryable/MySqlQueryable.cs | 5 +- .../SqlBuilder/MySqlExpressionContext.cs | 47 +++++++- 4 files changed, 105 insertions(+), 59 deletions(-) diff --git a/Src/Asp.Net/MySqlTest/Program.cs b/Src/Asp.Net/MySqlTest/Program.cs index 6c9d95d62..db24a2d24 100644 --- a/Src/Asp.Net/MySqlTest/Program.cs +++ b/Src/Asp.Net/MySqlTest/Program.cs @@ -35,7 +35,7 @@ namespace OrmTest // new SqlSugarPerformance(100).Select(); /***Demo***/ - // OrmTest.Demo.Query.Init(); + OrmTest.Demo.Query.Init(); //OrmTest.Demo.Insert.Init(); //OrmTest.Demo.Delete.Init(); //OrmTest.Demo.Update.Init(); diff --git a/Src/Asp.Net/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs b/Src/Asp.Net/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs index c19fdef3c..cee8117ce 100644 --- a/Src/Asp.Net/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs +++ b/Src/Asp.Net/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs @@ -38,7 +38,7 @@ namespace SqlSugar QueryBuilder.Clear(); } - public ISugarQueryable AS(string tableName) + public virtual ISugarQueryable AS(string tableName) { var entityName = typeof(T2).Name; IsAs = true; @@ -56,13 +56,13 @@ namespace SqlSugar this.Context.MappingTables.Add(entityName, tableName); return this; } - public ISugarQueryable With(string withString) + public virtual ISugarQueryable With(string withString) { QueryBuilder.TableWithString = withString; return this; } - public ISugarQueryable Filter(string FilterName, bool isDisabledGobalFilter = false) + public virtual ISugarQueryable Filter(string FilterName, bool isDisabledGobalFilter = false) { QueryBuilder.IsDisabledGobalFilter = isDisabledGobalFilter; if (this.Context.QueryFilter.GeFilterList.IsValuable() && FilterName.IsValuable()) @@ -77,24 +77,24 @@ namespace SqlSugar return this; } - public ISugarQueryable AddParameters(object parameters) + public virtual ISugarQueryable AddParameters(object parameters) { if (parameters != null) QueryBuilder.Parameters.AddRange(Context.Ado.GetParameters(parameters)); return this; } - public ISugarQueryable AddParameters(SugarParameter[] parameters) + public virtual ISugarQueryable AddParameters(SugarParameter[] parameters) { QueryBuilder.Parameters.AddRange(parameters); return this; } - public ISugarQueryable AddParameters(SugarParameter parameter) + public virtual ISugarQueryable AddParameters(SugarParameter parameter) { QueryBuilder.Parameters.Add(parameter); return this; } - public ISugarQueryable AddJoinInfo(string tableName, string shortName, string joinWhere, JoinType type = JoinType.Left) + public virtual ISugarQueryable AddJoinInfo(string tableName, string shortName, string joinWhere, JoinType type = JoinType.Left) { QueryBuilder.JoinIndex = +1; @@ -115,12 +115,12 @@ namespace SqlSugar this._Where(expression); return this; } - public ISugarQueryable Where(string whereString, object whereObj = null) + public virtual ISugarQueryable Where(string whereString, object whereObj = null) { this.Where(whereString, whereObj); return this; } - public ISugarQueryable Where(string whereString, object whereObj = null) + public virtual ISugarQueryable Where(string whereString, object whereObj = null) { var whereValue = QueryBuilder.WhereInfos; whereValue.Add(SqlBuilder.AppendWhereOrAnd(whereValue.Count == 0, whereString)); @@ -129,12 +129,12 @@ namespace SqlSugar return this; } - public ISugarQueryable Having(Expression> expression) + public virtual ISugarQueryable Having(Expression> expression) { this._Having(expression); return this; } - public ISugarQueryable Having(string whereString, object parameters = null) + public virtual ISugarQueryable Having(string whereString, object parameters = null) { QueryBuilder.HavingInfos = SqlBuilder.AppendHaving(whereString); @@ -149,20 +149,20 @@ namespace SqlSugar _Where(expression); return this; } - public ISugarQueryable WhereIF(bool isWhere, string whereString, object whereObj = null) + public virtual ISugarQueryable WhereIF(bool isWhere, string whereString, object whereObj = null) { if (!isWhere) return this; this.Where(whereString, whereObj); return this; } - public T InSingle(object pkValue) + public virtual T InSingle(object pkValue) { var list = In(pkValue).ToList(); if (list == null) return default(T); else return list.SingleOrDefault(); } - public ISugarQueryable In(params TParamter[] pkValues) + public virtual ISugarQueryable In(params TParamter[] pkValues) { if (pkValues == null || pkValues.Length == 0) { @@ -176,7 +176,7 @@ namespace SqlSugar filed = shortName + filed; return In(filed, pkValues); } - public ISugarQueryable In(string filed, params FieldType[] inValues) + public virtual ISugarQueryable In(string filed, params FieldType[] inValues) { if (inValues.Length == 1) { @@ -216,14 +216,14 @@ namespace SqlSugar } return this; } - public ISugarQueryable In(Expression> expression, params FieldType[] inValues) + public virtual ISugarQueryable In(Expression> expression, params FieldType[] inValues) { var isSingle = QueryBuilder.IsSingle(); var lamResult = QueryBuilder.GetExpressionValue(expression, isSingle ? ResolveExpressType.FieldSingle : ResolveExpressType.FieldMultiple); var fieldName = lamResult.GetResultString(); return In(fieldName, inValues); } - public ISugarQueryable In(List pkValues) { + public virtual ISugarQueryable In(List pkValues) { if (pkValues == null || pkValues.Count == 0) { Where(SqlBuilder.SqlFalse); @@ -231,7 +231,7 @@ namespace SqlSugar } return In(pkValues.ToArray()); } - public ISugarQueryable In(string InFieldName, List inValues) { + public virtual ISugarQueryable In(string InFieldName, List inValues) { if (inValues == null || inValues.Count == 0) { Where(SqlBuilder.SqlFalse); @@ -239,7 +239,7 @@ namespace SqlSugar } return In(InFieldName, inValues.ToArray()); } - public ISugarQueryable In(Expression> expression, List inValues) { + public virtual ISugarQueryable In(Expression> expression, List inValues) { if (inValues == null || inValues.Count == 0) { Where(SqlBuilder.SqlFalse); @@ -247,7 +247,7 @@ namespace SqlSugar } return In(expression, inValues.ToArray()); } - public ISugarQueryable OrderBy(string orderFileds) + public virtual ISugarQueryable OrderBy(string orderFileds) { var orderByValue = QueryBuilder.OrderByValue; if (QueryBuilder.OrderByValue.IsNullOrEmpty()) @@ -257,18 +257,18 @@ namespace SqlSugar QueryBuilder.OrderByValue += string.IsNullOrEmpty(orderByValue) ? orderFileds : ("," + orderFileds); return this; } - public ISugarQueryable OrderBy(Expression> expression, OrderByType type = OrderByType.Asc) + public virtual ISugarQueryable OrderBy(Expression> expression, OrderByType type = OrderByType.Asc) { this._OrderBy(expression, type); return this; } - public ISugarQueryable GroupBy(Expression> expression) + public virtual ISugarQueryable GroupBy(Expression> expression) { _GroupBy(expression); return this; } - public ISugarQueryable GroupBy(string groupFileds) + public virtual ISugarQueryable GroupBy(string groupFileds) { var croupByValue = QueryBuilder.GroupByValue; if (QueryBuilder.GroupByValue.IsNullOrEmpty()) @@ -279,14 +279,14 @@ namespace SqlSugar return this; } - public ISugarQueryable PartitionBy(Expression> expression) + public virtual ISugarQueryable PartitionBy(Expression> expression) { if (QueryBuilder.Take == null) QueryBuilder.Take = 0; _PartitionBy(expression); return this; } - public ISugarQueryable PartitionBy(string groupFileds) + public virtual ISugarQueryable PartitionBy(string groupFileds) { var partitionByValue = QueryBuilder.PartitionByValue; if (QueryBuilder.PartitionByValue.IsNullOrEmpty()) @@ -297,18 +297,18 @@ namespace SqlSugar return this; } - public ISugarQueryable Skip(int num) + public virtual ISugarQueryable Skip(int num) { QueryBuilder.Skip = num; return this; } - public ISugarQueryable Take(int num) + public virtual ISugarQueryable Take(int num) { QueryBuilder.Take = num; return this; } - public T Single() + public virtual T Single() { if (QueryBuilder.OrderByValue.IsNullOrEmpty()) { @@ -326,13 +326,13 @@ namespace SqlSugar return default(T); } } - public T Single(Expression> expression) + public virtual T Single(Expression> expression) { _Where(expression); return Single(); } - public T First() + public virtual T First() { if (QueryBuilder.OrderByValue.IsNullOrEmpty()) { @@ -350,27 +350,27 @@ namespace SqlSugar return default(T); } } - public T First(Expression> expression) + public virtual T First(Expression> expression) { _Where(expression); return First(); } - public bool Any(Expression> expression) + public virtual bool Any(Expression> expression) { _Where(expression); return Any(); } - public bool Any() + public virtual bool Any() { return this.Count() > 0; } - public ISugarQueryable Select(Expression> expression) + public virtual ISugarQueryable Select(Expression> expression) { return _Select(expression); } - public ISugarQueryable Select(string selectValue) where TResult : class, new() + public virtual ISugarQueryable Select(string selectValue) where TResult : class, new() { var reval = InstanceFactory.GetQueryable(this.Context.CurrentConnectionConfig); reval.Context = this.Context; @@ -378,13 +378,13 @@ namespace SqlSugar QueryBuilder.SelectValue = selectValue; return reval; } - public ISugarQueryable Select(string selectValue) + public virtual ISugarQueryable Select(string selectValue) { QueryBuilder.SelectValue = selectValue; return this; } - public int Count() + public virtual int Count() { QueryBuilder.IsCount = true; var sql = QueryBuilder.ToSqlString(); @@ -394,76 +394,76 @@ namespace SqlSugar return reval; } - public TResult Max(string maxField) + public virtual TResult Max(string maxField) { this.Select(string.Format(QueryBuilder.MaxTemplate, maxField)); var reval = this._ToList().SingleOrDefault(); return reval; } - public TResult Max(Expression> expression) + public virtual TResult Max(Expression> expression) { var isSingle = QueryBuilder.IsSingle(); var lamResult = QueryBuilder.GetExpressionValue(expression, isSingle ? ResolveExpressType.FieldSingle : ResolveExpressType.FieldMultiple); return Max(lamResult.GetResultString()); } - public TResult Min(string minField) + public virtual TResult Min(string minField) { this.Select(string.Format(QueryBuilder.MinTemplate, minField)); var reval = this._ToList().SingleOrDefault(); return reval; } - public TResult Min(Expression> expression) + public virtual TResult Min(Expression> expression) { var isSingle = QueryBuilder.IsSingle(); var lamResult = QueryBuilder.GetExpressionValue(expression, isSingle ? ResolveExpressType.FieldSingle : ResolveExpressType.FieldMultiple); return Min(lamResult.GetResultString()); } - public TResult Sum(string sumField) + public virtual TResult Sum(string sumField) { this.Select(string.Format(QueryBuilder.SumTemplate, sumField)); var reval = this._ToList().SingleOrDefault(); return reval; } - public TResult Sum(Expression> expression) + public virtual TResult Sum(Expression> expression) { var isSingle = QueryBuilder.IsSingle(); var lamResult = QueryBuilder.GetExpressionValue(expression, isSingle ? ResolveExpressType.FieldSingle : ResolveExpressType.FieldMultiple); return Sum(lamResult.GetResultString()); } - public TResult Avg(string avgField) + public virtual TResult Avg(string avgField) { this.Select(string.Format(QueryBuilder.AvgTemplate, avgField)); var reval = this._ToList().SingleOrDefault(); return reval; } - public TResult Avg(Expression> expression) + public virtual TResult Avg(Expression> expression) { var isSingle = QueryBuilder.IsSingle(); var lamResult = QueryBuilder.GetExpressionValue(expression, isSingle ? ResolveExpressType.FieldSingle : ResolveExpressType.FieldMultiple); return Avg(lamResult.GetResultString()); } - public string ToJson() + public virtual string ToJson() { return this.Context.RewritableMethods.SerializeObject(this.ToList()); } - public string ToJsonPage(int pageIndex, int pageSize) + public virtual string ToJsonPage(int pageIndex, int pageSize) { return this.Context.RewritableMethods.SerializeObject(this.ToPageList(pageIndex, pageSize)); } - public string ToJsonPage(int pageIndex, int pageSize, ref int totalNumber) + public virtual string ToJsonPage(int pageIndex, int pageSize, ref int totalNumber) { return this.Context.RewritableMethods.SerializeObject(this.ToPageList(pageIndex, pageSize, ref totalNumber)); } - public DataTable ToDataTable() + public virtual DataTable ToDataTable() { var sqlObj = this.ToSql(); RestoreMapping(); var result = this.Db.GetDataTable(sqlObj.Key, sqlObj.Value.ToArray()); return result; } - public DataTable ToDataTablePage(int pageIndex, int pageSize) + public virtual DataTable ToDataTablePage(int pageIndex, int pageSize) { if (pageIndex == 0) pageIndex = 1; @@ -471,17 +471,17 @@ namespace SqlSugar QueryBuilder.Take = pageSize; return ToDataTable(); } - public DataTable ToDataTablePage(int pageIndex, int pageSize, ref int totalNumber) + public virtual DataTable ToDataTablePage(int pageIndex, int pageSize, ref int totalNumber) { totalNumber = this.Count(); return ToDataTablePage(pageIndex, pageSize); } - public List ToList() + public virtual List ToList() { return _ToList(); } - public List ToPageList(int pageIndex, int pageSize) + public virtual List ToPageList(int pageIndex, int pageSize) { if (pageIndex == 0) pageIndex = 1; @@ -489,13 +489,13 @@ namespace SqlSugar QueryBuilder.Take = pageSize; return ToList(); } - public List ToPageList(int pageIndex, int pageSize, ref int totalNumber) + public virtual List ToPageList(int pageIndex, int pageSize, ref int totalNumber) { totalNumber = this.Count(); return ToPageList(pageIndex, pageSize); } - public KeyValuePair> ToSql() + public virtual KeyValuePair> ToSql() { string sql = QueryBuilder.ToSqlString(); RestoreMapping(); diff --git a/Src/Asp.Net/SqlSugar/Realization/MySql/Queryable/MySqlQueryable.cs b/Src/Asp.Net/SqlSugar/Realization/MySql/Queryable/MySqlQueryable.cs index fc86019f8..973f41504 100644 --- a/Src/Asp.Net/SqlSugar/Realization/MySql/Queryable/MySqlQueryable.cs +++ b/Src/Asp.Net/SqlSugar/Realization/MySql/Queryable/MySqlQueryable.cs @@ -2,7 +2,10 @@ { public class MySqlQueryable:QueryableProvider { - + public override ISugarQueryable With(string withString) + { + return this; + } } public class MySqlQueryable : QueryableProvider { diff --git a/Src/Asp.Net/SqlSugar/Realization/MySql/SqlBuilder/MySqlExpressionContext.cs b/Src/Asp.Net/SqlSugar/Realization/MySql/SqlBuilder/MySqlExpressionContext.cs index db0004749..812eaa3d8 100644 --- a/Src/Asp.Net/SqlSugar/Realization/MySql/SqlBuilder/MySqlExpressionContext.cs +++ b/Src/Asp.Net/SqlSugar/Realization/MySql/SqlBuilder/MySqlExpressionContext.cs @@ -1,4 +1,6 @@ -namespace SqlSugar +using System; +using System.Linq; +namespace SqlSugar { public class MySqlExpressionContext : ExpressionContext, ILambdaExpressions { @@ -7,7 +9,48 @@ { base.DbMehtods = new MySqlMethod(); } - + public override string GetTranslationTableName(string entityName, bool isMapping = true) + { + Check.ArgumentNullException(entityName, string.Format(ErrorMessage.ObjNotExist, "Table Name")); + if (IsTranslationText(entityName)) return entityName; + if (isMapping && this.MappingTables.IsValuable()) + { + if (entityName.Contains(".")) + { + var columnInfo = entityName.Split('.'); + var mappingInfo = this.MappingTables.FirstOrDefault(it => it.EntityName.Equals(columnInfo.Last(), StringComparison.CurrentCultureIgnoreCase)); + if (mappingInfo != null) + { + columnInfo[columnInfo.Length - 1] = mappingInfo.EntityName; + } + return string.Join(".", columnInfo.Select(it => GetTranslationText(it))); + } + else + { + var mappingInfo = this.MappingTables.FirstOrDefault(it => it.EntityName.Equals(entityName, StringComparison.CurrentCultureIgnoreCase)); + return "`" + (mappingInfo == null ? entityName : mappingInfo.EntityName) + "`"; + } + } + else + { + if (entityName.Contains(".")) + { + return string.Join(".", entityName.Split('.').Select(it => GetTranslationText(it))); + } + else + { + return GetTranslationText(entityName); + } + } + } + public override bool IsTranslationText(string name) + { + return name.Contains("`") && name.Contains("`"); + } + public override string GetTranslationText(string name) + { + return "`" + name + "`"; + } } public class MySqlMethod : DefaultDbMethod, IDbMethods {