mirror of
https://gitee.com/dotnetchina/SqlSugar.git
synced 2025-07-15 23:13:42 +08:00
-
This commit is contained in:
parent
fe4fcefcf3
commit
00b78e47a9
@ -18,19 +18,19 @@ namespace OrmTest
|
|||||||
static void Main(string[] args)
|
static void Main(string[] args)
|
||||||
{
|
{
|
||||||
//Unit Test
|
//Unit Test
|
||||||
int eachCount = 10;
|
int eachCount = 1;
|
||||||
new Field(eachCount).Init();
|
//new Field(eachCount).Init();
|
||||||
new Where(eachCount).Init();
|
//new Where(eachCount).Init();
|
||||||
new Method(eachCount).Init();
|
//new Method(eachCount).Init();
|
||||||
new JoinQuery(eachCount).Init();
|
//new JoinQuery(eachCount).Init();
|
||||||
new SingleQuery(eachCount).Init();
|
//new SingleQuery(eachCount).Init();
|
||||||
new SelectQuery(eachCount).Init();
|
new SelectQuery(eachCount).Init();
|
||||||
|
|
||||||
|
|
||||||
//Performance Test
|
//Performance Test
|
||||||
for (int i = 0; i < 100; i++)
|
for (int i = 0; i < 100; i++)
|
||||||
{
|
{
|
||||||
new SqlSugarPerformance().Select();
|
// new SqlSugarPerformance().Select();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -9,29 +9,6 @@ namespace SqlSugar
|
|||||||
{
|
{
|
||||||
public class QueryableAccessory
|
public class QueryableAccessory
|
||||||
{
|
{
|
||||||
protected List<SugarParameter> _Pars;
|
|
||||||
protected ILambdaExpressions _LambdaExpressions;
|
protected ILambdaExpressions _LambdaExpressions;
|
||||||
protected List<SugarParameter> BasePars
|
|
||||||
{
|
|
||||||
get
|
|
||||||
{
|
|
||||||
if (_Pars == null)
|
|
||||||
_Pars = new List<SugarParameter>();
|
|
||||||
return _Pars;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
protected void AddPars(object whereObj, SqlSugarClient context)
|
|
||||||
{
|
|
||||||
var sqlParsArray = context.Database.GetParameters(whereObj);
|
|
||||||
if (sqlParsArray != null)
|
|
||||||
this.BasePars.AddRange(sqlParsArray);
|
|
||||||
}
|
|
||||||
protected void AddPars(List<SugarParameter> pars, SqlSugarClient context)
|
|
||||||
{
|
|
||||||
if (_Pars == null)
|
|
||||||
_Pars = new List<SugarParameter>();
|
|
||||||
_Pars.AddRange(pars);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -15,26 +15,20 @@ namespace SqlSugar
|
|||||||
public IDb Db { get { return Context.Database; } }
|
public IDb Db { get { return Context.Database; } }
|
||||||
public IDbBind Bind { get { return this.Db.DbBind; } }
|
public IDbBind Bind { get { return this.Db.DbBind; } }
|
||||||
public ISqlBuilder SqlBuilder { get; set; }
|
public ISqlBuilder SqlBuilder { get; set; }
|
||||||
public List<SugarParameter> Pars
|
|
||||||
{
|
|
||||||
get { return PubMethod.IsNullReturnNew<List<SugarParameter>>(base._Pars); }
|
|
||||||
set { base._Pars = value; }
|
|
||||||
}
|
|
||||||
|
|
||||||
public void Clear()
|
public void Clear()
|
||||||
{
|
{
|
||||||
Pars = null;
|
|
||||||
SqlBuilder.LambadaQueryBuilder.Clear();
|
SqlBuilder.LambadaQueryBuilder.Clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
public ISugarQueryable<T> AddParameters(object pars)
|
public ISugarQueryable<T> AddParameters(object whereObj)
|
||||||
{
|
{
|
||||||
AddPars(pars, Context);
|
if (whereObj != null)
|
||||||
|
this.SqlBuilder.LambadaQueryBuilder.QueryPars.AddRange(Context.Database.GetParameters(whereObj));
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
public ISugarQueryable<T> AddParameters(SugarParameter[] pars)
|
public ISugarQueryable<T> AddParameters(SugarParameter[] pars)
|
||||||
{
|
{
|
||||||
AddPars(pars, Context);
|
this.SqlBuilder.LambadaQueryBuilder.QueryPars.AddRange(pars);
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -68,7 +62,8 @@ namespace SqlSugar
|
|||||||
{
|
{
|
||||||
var whereValue = SqlBuilder.LambadaQueryBuilder.WhereInfos;
|
var whereValue = SqlBuilder.LambadaQueryBuilder.WhereInfos;
|
||||||
whereValue.Add(SqlBuilder.AppendWhereOrAnd(whereValue.Count == 0, whereString));
|
whereValue.Add(SqlBuilder.AppendWhereOrAnd(whereValue.Count == 0, whereString));
|
||||||
this.AddPars(whereObj, this.Context);
|
if (whereObj != null)
|
||||||
|
this.SqlBuilder.LambadaQueryBuilder.QueryPars.AddRange(Context.Database.GetParameters(whereObj));
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
public ISugarQueryable<T> Where<T2>(Expression<Func<T2, bool>> expression)
|
public ISugarQueryable<T> Where<T2>(Expression<Func<T2, bool>> expression)
|
||||||
@ -178,7 +173,7 @@ namespace SqlSugar
|
|||||||
public ISugarQueryable<T> OrderBy(string orderFileds)
|
public ISugarQueryable<T> OrderBy(string orderFileds)
|
||||||
{
|
{
|
||||||
var orderByValue = SqlBuilder.LambadaQueryBuilder.OrderByValue;
|
var orderByValue = SqlBuilder.LambadaQueryBuilder.OrderByValue;
|
||||||
SqlBuilder.LambadaQueryBuilder.OrderByValue +=string.IsNullOrEmpty(orderByValue)?orderFileds:(","+orderFileds);
|
SqlBuilder.LambadaQueryBuilder.OrderByValue += string.IsNullOrEmpty(orderByValue) ? orderFileds : ("," + orderFileds);
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -302,8 +297,8 @@ namespace SqlSugar
|
|||||||
var reval = InstanceFactory.GetQueryable<TResult>(this.Context.CurrentConnectionConfig);
|
var reval = InstanceFactory.GetQueryable<TResult>(this.Context.CurrentConnectionConfig);
|
||||||
reval.Context = this.Context;
|
reval.Context = this.Context;
|
||||||
reval.SqlBuilder = this.SqlBuilder;
|
reval.SqlBuilder = this.SqlBuilder;
|
||||||
SqlBuilder.LambadaQueryBuilder.SelectValue = expression;
|
reval.SqlBuilder.LambadaQueryBuilder.QueryPars = this.SqlBuilder.LambadaQueryBuilder.QueryPars;
|
||||||
reval.Pars = this.Pars;
|
reval.SqlBuilder.LambadaQueryBuilder.SelectValue = expression;
|
||||||
return reval;
|
return reval;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -313,7 +308,6 @@ namespace SqlSugar
|
|||||||
reval.Context = this.Context;
|
reval.Context = this.Context;
|
||||||
reval.SqlBuilder = this.SqlBuilder;
|
reval.SqlBuilder = this.SqlBuilder;
|
||||||
SqlBuilder.LambadaQueryBuilder.SelectValue = selectValue;
|
SqlBuilder.LambadaQueryBuilder.SelectValue = selectValue;
|
||||||
reval.Pars = this.Pars;
|
|
||||||
return reval;
|
return reval;
|
||||||
}
|
}
|
||||||
public ISugarQueryable<T> Select(string selectValue)
|
public ISugarQueryable<T> Select(string selectValue)
|
||||||
@ -349,15 +343,14 @@ namespace SqlSugar
|
|||||||
|
|
||||||
public List<T> ToList()
|
public List<T> ToList()
|
||||||
{
|
{
|
||||||
this.Pars.AddRange(SqlBuilder.LambadaQueryBuilder.QueryPars);
|
var sqlObj = this.ToSql();
|
||||||
var sqlObj =this.ToSql();
|
|
||||||
var isComplexModel = Regex.IsMatch(sqlObj.Key, @"AS \[\w+\.\w+\]");
|
var isComplexModel = Regex.IsMatch(sqlObj.Key, @"AS \[\w+\.\w+\]");
|
||||||
using (var dataReader = this.Db.GetDataReader(sqlObj.Key, sqlObj.Value.ToArray()))
|
using (var dataReader = this.Db.GetDataReader(sqlObj.Key, sqlObj.Value.ToArray()))
|
||||||
{
|
{
|
||||||
var tType = typeof(T);
|
var tType = typeof(T);
|
||||||
if (tType.IsAnonymousType()||isComplexModel)
|
if (tType.IsAnonymousType() || isComplexModel)
|
||||||
{
|
{
|
||||||
return this.Context.RewritableMethods.DataReaderToDynamicList<T>(dataReader);
|
return this.Context.RewritableMethods.DataReaderToDynamicList<T>(dataReader);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -384,7 +377,7 @@ namespace SqlSugar
|
|||||||
public KeyValuePair<string, List<SugarParameter>> ToSql()
|
public KeyValuePair<string, List<SugarParameter>> ToSql()
|
||||||
{
|
{
|
||||||
string sql = SqlBuilder.LambadaQueryBuilder.ToSqlString();
|
string sql = SqlBuilder.LambadaQueryBuilder.ToSqlString();
|
||||||
return new KeyValuePair<string, List<SugarParameter>>(sql, this.Pars);
|
return new KeyValuePair<string, List<SugarParameter>>(sql, SqlBuilder.LambadaQueryBuilder.QueryPars);
|
||||||
}
|
}
|
||||||
|
|
||||||
public DataTable ToDataTable()
|
public DataTable ToDataTable()
|
||||||
@ -416,8 +409,8 @@ namespace SqlSugar
|
|||||||
protected void _Where(Expression expression)
|
protected void _Where(Expression expression)
|
||||||
{
|
{
|
||||||
var isSingle = SqlBuilder.LambadaQueryBuilder.IsSingle();
|
var isSingle = SqlBuilder.LambadaQueryBuilder.IsSingle();
|
||||||
var result=SqlBuilder.LambadaQueryBuilder.GetExpressionValue(expression, isSingle ? ResolveExpressType.WhereSingle : ResolveExpressType.WhereMultiple);
|
var result = SqlBuilder.LambadaQueryBuilder.GetExpressionValue(expression, isSingle ? ResolveExpressType.WhereSingle : ResolveExpressType.WhereMultiple);
|
||||||
SqlBuilder.LambadaQueryBuilder.WhereInfos.Add(SqlBuilder.AppendWhereOrAnd(SqlBuilder.LambadaQueryBuilder.WhereInfos.IsNullOrEmpty(),result.GetResultString()));
|
SqlBuilder.LambadaQueryBuilder.WhereInfos.Add(SqlBuilder.AppendWhereOrAnd(SqlBuilder.LambadaQueryBuilder.WhereInfos.IsNullOrEmpty(), result.GetResultString()));
|
||||||
}
|
}
|
||||||
protected ISugarQueryable<T> _OrderBy(Expression expression, OrderByType type = OrderByType.Asc)
|
protected ISugarQueryable<T> _OrderBy(Expression expression, OrderByType type = OrderByType.Asc)
|
||||||
{
|
{
|
||||||
|
@ -8,18 +8,23 @@ namespace SqlSugar
|
|||||||
{
|
{
|
||||||
public abstract class LambadaQueryBuilder : IDMLBuilder
|
public abstract class LambadaQueryBuilder : IDMLBuilder
|
||||||
{
|
{
|
||||||
|
|
||||||
|
public LambadaQueryBuilder()
|
||||||
|
{
|
||||||
|
this.QueryPars = new List<SugarParameter>();
|
||||||
|
}
|
||||||
|
|
||||||
#region Private Fileds
|
#region Private Fileds
|
||||||
private List<SugarParameter> _QueryPars;
|
|
||||||
private List<JoinQueryInfo> _JoinQueryInfos;
|
private List<JoinQueryInfo> _JoinQueryInfos;
|
||||||
private List<string> _WhereInfos;
|
private List<string> _WhereInfos;
|
||||||
private string _TableNameString;
|
private string _TableNameString;
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region Service object
|
#region Service object
|
||||||
public StringBuilder Sql { get; set; }
|
public StringBuilder Sql { get; set; }
|
||||||
public SqlSugarClient Context { get; set; }
|
public SqlSugarClient Context { get; set; }
|
||||||
public ILambdaExpressions LambdaExpressions { get; set; }
|
public ILambdaExpressions LambdaExpressions { get; set; }
|
||||||
public ISqlBuilder Builder { get; set; }
|
public ISqlBuilder Builder { get; set; }
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region Splicing basic
|
#region Splicing basic
|
||||||
@ -33,15 +38,7 @@ namespace SqlSugar
|
|||||||
public string GroupByValue { get; set; }
|
public string GroupByValue { get; set; }
|
||||||
public int WhereIndex { get; set; }
|
public int WhereIndex { get; set; }
|
||||||
public int JoinIndex { get; set; }
|
public int JoinIndex { get; set; }
|
||||||
public virtual List<SugarParameter> QueryPars
|
public virtual List<SugarParameter> QueryPars { get; set; }
|
||||||
{
|
|
||||||
get
|
|
||||||
{
|
|
||||||
_QueryPars = PubMethod.IsNullReturnNew(_QueryPars);
|
|
||||||
return _QueryPars;
|
|
||||||
}
|
|
||||||
set { _QueryPars = value; }
|
|
||||||
}
|
|
||||||
public virtual List<JoinQueryInfo> JoinQueryInfos
|
public virtual List<JoinQueryInfo> JoinQueryInfos
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
@ -106,11 +103,13 @@ namespace SqlSugar
|
|||||||
public virtual ExpressionResult GetExpressionValue(Expression expression, ResolveExpressType resolveType)
|
public virtual ExpressionResult GetExpressionValue(Expression expression, ResolveExpressType resolveType)
|
||||||
{
|
{
|
||||||
ILambdaExpressions resolveExpress = this.LambdaExpressions;
|
ILambdaExpressions resolveExpress = this.LambdaExpressions;
|
||||||
|
this.LambdaExpressions.Clear();
|
||||||
resolveExpress.JoinQueryInfos = Builder.LambadaQueryBuilder.JoinQueryInfos;
|
resolveExpress.JoinQueryInfos = Builder.LambadaQueryBuilder.JoinQueryInfos;
|
||||||
resolveExpress.MappingColumns = Context.MappingColumns;
|
resolveExpress.MappingColumns = Context.MappingColumns;
|
||||||
resolveExpress.MappingTables = Context.MappingTables;
|
resolveExpress.MappingTables = Context.MappingTables;
|
||||||
resolveExpress.IgnoreComumnList = Context.IgnoreComumns;
|
resolveExpress.IgnoreComumnList = Context.IgnoreComumns;
|
||||||
resolveExpress.Resolve(expression, resolveType);
|
resolveExpress.Resolve(expression, resolveType);
|
||||||
|
this.QueryPars = new List<SugarParameter>();
|
||||||
this.QueryPars.AddRange(resolveExpress.Parameters);
|
this.QueryPars.AddRange(resolveExpress.Parameters);
|
||||||
var reval = resolveExpress.Result;
|
var reval = resolveExpress.Result;
|
||||||
return reval;
|
return reval;
|
||||||
|
@ -11,7 +11,6 @@ namespace SqlSugar
|
|||||||
{
|
{
|
||||||
SqlSugarClient Context { get; set; }
|
SqlSugarClient Context { get; set; }
|
||||||
ISqlBuilder SqlBuilder { get; set; }
|
ISqlBuilder SqlBuilder { get; set; }
|
||||||
List<SugarParameter> Pars { get; set; }
|
|
||||||
|
|
||||||
ISugarQueryable<T> AddParameters(object pars);
|
ISugarQueryable<T> AddParameters(object pars);
|
||||||
ISugarQueryable<T> AddParameters(SugarParameter[] pars);
|
ISugarQueryable<T> AddParameters(SugarParameter[] pars);
|
||||||
|
Loading…
Reference in New Issue
Block a user