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