This commit is contained in:
sunkaixuan 2017-04-26 01:52:29 +08:00
parent fe4fcefcf3
commit 00b78e47a9
5 changed files with 33 additions and 65 deletions

View File

@ -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();
}
}
}

View File

@ -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);
}
}
}

View File

@ -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)
{

View File

@ -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;

View File

@ -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);