This commit is contained in:
sunkaixuan
2017-04-29 20:27:55 +08:00
parent d90895ad43
commit 5831b1ab2c
21 changed files with 305 additions and 179 deletions

View File

@@ -19,11 +19,11 @@ namespace OrmTest
{
//Unit Test
int eachCount = 1;
//new Field(eachCount).Init();
//new Where(eachCount).Init();
//new Method(eachCount).Init();
//new JoinQuery(eachCount).Init();
//new SingleQuery(eachCount).Init();
new Field(eachCount).Init();
new Where(eachCount).Init();
new Method(eachCount).Init();
new JoinQuery(eachCount).Init();
new SingleQuery(eachCount).Init();
new SelectQuery(eachCount).Init();

View File

@@ -44,7 +44,7 @@ namespace OrmTest.UnitTest
.GroupBy(it=>it.Id)
.OrderBy(it=>it.Id)
.Select(it=>it.Id).ToSql();
base.Check("SELECT [Id] FROM [Student] WITH(NOLOCK) GROUP BY [Id] ORDER BY [Id] ASC", null, gos.Key,null, "基本查询出错");
base.Check("SELECT [Id] FROM [Student] WITH(NOLOCK) GROUP BY [Id] ORDER BY [Id] ASC", null, gos.Key,null, "基本查询出错");
var dr3 = db.Queryable<Student>().Select(it => new ViewModelStudent2 { Name=it.Name,Student=it}).ToList();
var dr0 = db.Queryable<Student>().Select(it => new { id=it.Id,w=new { x=it } }).ToList();
var dr1 = db.Queryable<Student>().Select(it => new { newid = it.Id }).ToList();

View File

@@ -29,7 +29,76 @@ namespace OrmTest.UnitTest
{
using (var db = GetInstance())
{
var list = db.Queryable<Student>().Where(st => st.Id > 0).ToList();
var s1 = db.Queryable<Student>().ToSql();
base.Check("SELECT [Id],[SchoolId],[Name],[CreateTime] FROM [Student]", null, s1.Key, null, "s1 Error");
var s2 = db.Queryable<Student>().With(SqlWith.NoLock).ToSql();
base.Check("SELECT [Id],[SchoolId],[Name],[CreateTime] FROM [Student] WITH(NOLOCK)", null, s2.Key, null, "s2 Error");
var s3 = db.Queryable<Student>().OrderBy(it=>it.Id).ToSql();
base.Check("SELECT [Id],[SchoolId],[Name],[CreateTime] FROM [Student] ORDER BY [Id] ASC", null, s3.Key, null, "s3 Error");
var s4 = db.Queryable<Student>().OrderBy(it => it.Id).Take(3).ToSql();
base.Check(@"WITH PageTable AS(
SELECT [Id],[SchoolId],[Name],[CreateTime] FROM [Student]
)
SELECT * FROM (SELECT *,ROW_NUMBER() OVER(ORDER BY [Id] ASC) AS RowIndex FROM PageTable ) T WHERE RowIndex BETWEEN 1 AND 3", null, s4.Key, null, "s4 Error");
var s5 = db.Queryable<Student>().OrderBy(it => it.Id).Skip(3).ToSql();
base.Check(@"WITH PageTable AS(
SELECT [Id],[SchoolId],[Name],[CreateTime] FROM [Student]
)
SELECT * FROM (SELECT *,ROW_NUMBER() OVER(ORDER BY [Id] ASC) AS RowIndex FROM PageTable ) T WHERE RowIndex BETWEEN 4 AND 9223372036854775807", null, s5.Key,null, "s5 Error");
int pageIndex = 2;
int pageSize = 10;
var s6 = db.Queryable<Student>().OrderBy(it => it.Id,OrderByType.Desc).Skip((pageIndex-1)*pageSize).Take(pageSize*pageIndex).ToSql();
base.Check(@"WITH PageTable AS(
SELECT [Id],[SchoolId],[Name],[CreateTime] FROM [Student]
)
SELECT * FROM (SELECT *,ROW_NUMBER() OVER(ORDER BY [Id] DESC) AS RowIndex FROM PageTable ) T WHERE RowIndex BETWEEN 11 AND 20", null, s6.Key, null, "s6 Error");
int studentCount=db.Database.GetInt("select count(1) from Student");
var countIsSuccess=db.Queryable<Student>().Count()== studentCount;
if (!countIsSuccess) {
throw new Exception("countIsSuccess Error");
}
var s7 = db.Queryable<Student>().OrderBy(it => it.Id, OrderByType.Desc).Skip((pageIndex - 1) * pageSize).Take(pageSize * pageIndex).ToPageList(pageIndex,pageSize,ref studentCount);
countIsSuccess = studentCount == db.Queryable<Student>().OrderBy(it => it.Id, OrderByType.Desc).Skip((pageIndex - 1) * pageSize).Take(pageSize * pageIndex).Count();
if (!countIsSuccess)
{
throw new Exception("s7 Error");
}
int studentMin = db.Database.GetInt("select min(id) from Student");
var minIsSuccess = db.Queryable<Student>().Min(it=>it.Id) == studentMin;
if (!minIsSuccess)
{
throw new Exception("minIsSuccess Error");
}
int studentMax = db.Database.GetInt("select max(id) from Student");
var maxIsSuccess = db.Queryable<Student>().Max(it => it.Id) == studentMax;
if (!maxIsSuccess)
{
throw new Exception("maxIsSuccess Error");
}
int studentAvg = db.Database.GetInt("select avg(id) from Student");
var avgIsSuccess = db.Queryable<Student>().Avg(it => it.Id) == studentAvg;
if (!maxIsSuccess)
{
throw new Exception("avgIsSuccess Error");
}
int studentSum = db.Database.GetInt("select sum(id) from Student");
var sumIsSuccess = db.Queryable<Student>().Sum(it => it.Id) == studentSum;
if (!sumIsSuccess)
{
throw new Exception("sumIsSuccess Error");
}
}
}

View File

@@ -67,7 +67,7 @@ namespace SqlSugar
}
else if (type.IsValueType || type == PubConst.StringType)
{
return GetKeyValueList<T>(type, dataReader);
return GetValueTypeList<T>(type, dataReader);
}
else if (type.IsArray)
{

View File

@@ -16,31 +16,38 @@ namespace SqlSugar
public IDb Db { get { return Context.Database; } }
public IDbBind Bind { get { return this.Db.DbBind; } }
public ISqlBuilder SqlBuilder { get; set; }
public QueryBuilder QueryBuilder
{
get
{
return this.SqlBuilder.QueryBuilder;
}
}
public void Clear()
{
SqlBuilder.LambadaQueryBuilder.Clear();
QueryBuilder.Clear();
}
public ISugarQueryable<T> AddParameters(object whereObj)
{
if (whereObj != null)
this.SqlBuilder.LambadaQueryBuilder.QueryPars.AddRange(Context.Database.GetParameters(whereObj));
QueryBuilder.QueryPars.AddRange(Context.Database.GetParameters(whereObj));
return this;
}
public ISugarQueryable<T> AddParameters(SugarParameter[] pars)
{
this.SqlBuilder.LambadaQueryBuilder.QueryPars.AddRange(pars);
QueryBuilder.QueryPars.AddRange(pars);
return this;
}
public ISugarQueryable<T> AddJoinInfo(string tableName, string shortName, string joinWhere, JoinType type = JoinType.Left)
{
SqlBuilder.LambadaQueryBuilder.JoinIndex = +1;
SqlBuilder.LambadaQueryBuilder.JoinQueryInfos
QueryBuilder.JoinIndex = +1;
QueryBuilder.JoinQueryInfos
.Add(new JoinQueryInfo()
{
JoinIndex = SqlBuilder.LambadaQueryBuilder.JoinIndex,
JoinIndex = QueryBuilder.JoinIndex,
TableName = tableName,
ShortName = shortName,
JoinType = type,
@@ -61,10 +68,10 @@ namespace SqlSugar
}
public ISugarQueryable<T> Where<T2>(string whereString, object whereObj = null)
{
var whereValue = SqlBuilder.LambadaQueryBuilder.WhereInfos;
var whereValue = QueryBuilder.WhereInfos;
whereValue.Add(SqlBuilder.AppendWhereOrAnd(whereValue.Count == 0, whereString));
if (whereObj != null)
this.SqlBuilder.LambadaQueryBuilder.QueryPars.AddRange(Context.Database.GetParameters(whereObj));
QueryBuilder.QueryPars.AddRange(Context.Database.GetParameters(whereObj));
return this;
}
public ISugarQueryable<T> Where<T2>(Expression<Func<T2, bool>> expression)
@@ -148,8 +155,8 @@ namespace SqlSugar
Where("1=2 ");
return this;
}
string filed = Context.Database.DbMaintenance.GetSinglePrimaryFiled(this.SqlBuilder.GetTableName(typeof(T).Name));
string shortName = this.SqlBuilder.LambadaQueryBuilder.TableShortName == null ? null : (this.SqlBuilder.LambadaQueryBuilder.TableShortName + ".");
string filed = Context.Database.DbMaintenance.GetSinglePrimaryFiled(this.SqlBuilder.GetTranslationTableName(typeof(T).Name));
string shortName = QueryBuilder.TableShortName == null ? null : (QueryBuilder.TableShortName + ".");
filed = shortName + filed;
return In(filed, pkValues);
}
@@ -167,11 +174,11 @@ namespace SqlSugar
{
if (inValues.GetType().IsArray)
{
var whereIndex = this.SqlBuilder.LambadaQueryBuilder.WhereIndex;
var whereIndex = QueryBuilder.WhereIndex;
string parameterName = this.SqlBuilder.SqlParameterKeyWord + "InPara" + whereIndex;
this.Where(string.Format("{0} = {1} ", filed, parameterName));
this.Where(string.Format(QueryBuilder.InTemplate, filed, parameterName));
this.AddParameters(new SqlParameter(parameterName, inValues[0]));
this.SqlBuilder.LambadaQueryBuilder.WhereIndex++;
QueryBuilder.WhereIndex++;
}
else
{
@@ -183,7 +190,7 @@ namespace SqlSugar
values.Add(item.ToString().ToSqlValue());
}
}
this.Where(string.Format("{0} in ({1}) ", filed, string.Join(",", values)));
this.Where(string.Format(QueryBuilder.InTemplate, filed, string.Join(",", values)));
}
}
else
@@ -196,7 +203,7 @@ namespace SqlSugar
values.Add(item.ToString().ToSqlValue());
}
}
this.Where(string.Format("{0} in ({1}) ", filed, string.Join(",", values)));
this.Where(string.Format(QueryBuilder.InTemplate, filed, string.Join(",", values)));
}
return this;
@@ -204,20 +211,20 @@ namespace SqlSugar
public ISugarQueryable<T> In<FieldType>(Expression<Func<T, object>> expression, params FieldType[] inValues)
{
var isSingle = SqlBuilder.LambadaQueryBuilder.IsSingle();
var lamResult = SqlBuilder.LambadaQueryBuilder.GetExpressionValue(expression, isSingle ? ResolveExpressType.FieldSingle : ResolveExpressType.FieldMultiple);
var isSingle = QueryBuilder.IsSingle();
var lamResult = QueryBuilder.GetExpressionValue(expression, isSingle ? ResolveExpressType.FieldSingle : ResolveExpressType.FieldMultiple);
var fieldName = lamResult.GetResultString();
return In(fieldName, inValues);
}
public ISugarQueryable<T> OrderBy(string orderFileds)
{
var orderByValue = SqlBuilder.LambadaQueryBuilder.OrderByValue;
if (SqlBuilder.LambadaQueryBuilder.OrderByValue.IsNullOrEmpty())
var orderByValue = QueryBuilder.OrderByValue;
if (QueryBuilder.OrderByValue.IsNullOrEmpty())
{
SqlBuilder.LambadaQueryBuilder.OrderByValue = "ORDER BY ";
QueryBuilder.OrderByValue = QueryBuilder.OrderByTemplate;
}
SqlBuilder.LambadaQueryBuilder.OrderByValue += string.IsNullOrEmpty(orderByValue) ? orderFileds : ("," + orderFileds);
QueryBuilder.OrderByValue += string.IsNullOrEmpty(orderByValue) ? orderFileds : ("," + orderFileds);
return this;
}
@@ -241,35 +248,35 @@ namespace SqlSugar
public ISugarQueryable<T> GroupBy(string groupFileds)
{
var croupByValue = SqlBuilder.LambadaQueryBuilder.GroupByValue;
if (SqlBuilder.LambadaQueryBuilder.GroupByValue.IsNullOrEmpty())
var croupByValue = QueryBuilder.GroupByValue;
if (QueryBuilder.GroupByValue.IsNullOrEmpty())
{
SqlBuilder.LambadaQueryBuilder.GroupByValue = "GROUP BY ";
QueryBuilder.GroupByValue = QueryBuilder.GroupByTemplate;
}
SqlBuilder.LambadaQueryBuilder.GroupByValue += string.IsNullOrEmpty(croupByValue) ? groupFileds : ("," + groupFileds);
QueryBuilder.GroupByValue += string.IsNullOrEmpty(croupByValue) ? groupFileds : ("," + groupFileds);
return this;
}
public ISugarQueryable<T> Skip(int num)
{
SqlBuilder.LambadaQueryBuilder.Skip = num;
QueryBuilder.Skip = num;
return this;
}
public ISugarQueryable<T> Take(int num)
{
SqlBuilder.LambadaQueryBuilder.Take = num;
QueryBuilder.Take = num;
return this;
}
public T Single()
{
if (SqlBuilder.LambadaQueryBuilder.OrderByValue.IsNullOrEmpty())
if (QueryBuilder.OrderByValue.IsNullOrEmpty())
{
SqlBuilder.LambadaQueryBuilder.OrderByValue = " ORDER BY GETDATE()";
QueryBuilder.OrderByValue = QueryBuilder.DefaultOrderByTemplate;
}
SqlBuilder.LambadaQueryBuilder.Skip = 0;
SqlBuilder.LambadaQueryBuilder.Take = 1;
QueryBuilder.Skip = 0;
QueryBuilder.Take = 1;
var reval = this.ToList();
if (reval.IsValuable())
{
@@ -289,12 +296,12 @@ namespace SqlSugar
public T First()
{
if (SqlBuilder.LambadaQueryBuilder.OrderByValue.IsNullOrEmpty())
if (QueryBuilder.OrderByValue.IsNullOrEmpty())
{
SqlBuilder.LambadaQueryBuilder.OrderByValue = " ORDER BY GETDATE()";
QueryBuilder.OrderByValue = QueryBuilder.DefaultOrderByTemplate;
}
SqlBuilder.LambadaQueryBuilder.Skip = 0;
SqlBuilder.LambadaQueryBuilder.Take = 1;
QueryBuilder.Skip = 0;
QueryBuilder.Take = 1;
var reval = this.ToList();
if (reval.IsValuable())
{
@@ -361,75 +368,75 @@ namespace SqlSugar
var reval = InstanceFactory.GetQueryable<TResult>(this.Context.CurrentConnectionConfig);
reval.Context = this.Context;
reval.SqlBuilder = this.SqlBuilder;
SqlBuilder.LambadaQueryBuilder.SelectValue = selectValue;
QueryBuilder.SelectValue = selectValue;
return reval;
}
public ISugarQueryable<T> Select(string selectValue)
{
SqlBuilder.LambadaQueryBuilder.SelectValue = selectValue;
QueryBuilder.SelectValue = selectValue;
return this;
}
public int Count()
{
SqlBuilder.LambadaQueryBuilder.IsCount = true;
var sql = SqlBuilder.LambadaQueryBuilder.ToSqlString();
var reval = Context.Database.GetInt(sql, SqlBuilder.LambadaQueryBuilder.QueryPars.ToArray());
SqlBuilder.LambadaQueryBuilder.IsCount = false;
QueryBuilder.IsCount = true;
var sql = QueryBuilder.ToSqlString();
var reval = Context.Database.GetInt(sql, QueryBuilder.QueryPars.ToArray());
QueryBuilder.IsCount = false;
return reval;
}
public TResult Max<TResult>(string maxField)
{
this.Select("Max("+ maxField + ")");
this.Select(string.Format(QueryBuilder.MaxTemplate, maxField));
var reval = this._ToList<TResult>().SingleOrDefault();
return reval;
}
public TResult Max<TResult>(Expression<Func<T, object>> expression)
public TResult Max<TResult>(Expression<Func<T, TResult>> expression)
{
var isSingle = SqlBuilder.LambadaQueryBuilder.IsSingle();
var lamResult = SqlBuilder.LambadaQueryBuilder.GetExpressionValue(expression, isSingle ? ResolveExpressType.FieldSingle : ResolveExpressType.FieldMultiple);
var isSingle = QueryBuilder.IsSingle();
var lamResult = QueryBuilder.GetExpressionValue(expression, isSingle ? ResolveExpressType.FieldSingle : ResolveExpressType.FieldMultiple);
return Max<TResult>(lamResult.GetResultString());
}
public TResult Min<TResult>(string minField)
{
this.Select("Min("+ minField + ")");
this.Select(string.Format(QueryBuilder.MinTemplate, minField));
var reval = this._ToList<TResult>().SingleOrDefault();
return reval;
}
public TResult Min<TResult>(Expression<Func<T, object>> expression)
public TResult Min<TResult>(Expression<Func<T, TResult>> expression)
{
var isSingle = SqlBuilder.LambadaQueryBuilder.IsSingle();
var lamResult = SqlBuilder.LambadaQueryBuilder.GetExpressionValue(expression, isSingle ? ResolveExpressType.FieldSingle : ResolveExpressType.FieldMultiple);
var isSingle = QueryBuilder.IsSingle();
var lamResult = QueryBuilder.GetExpressionValue(expression, isSingle ? ResolveExpressType.FieldSingle : ResolveExpressType.FieldMultiple);
return Min<TResult>(lamResult.GetResultString());
}
public TResult Sum<TResult>(string sumField)
{
this.Select("Sum(" + sumField + ")");
this.Select(string.Format(QueryBuilder.SumTemplate, sumField));
var reval = this._ToList<TResult>().SingleOrDefault();
return reval;
}
public TResult Sum<TResult>(Expression<Func<T, object>> expression)
public TResult Sum<TResult>(Expression<Func<T, TResult>> expression)
{
var isSingle = SqlBuilder.LambadaQueryBuilder.IsSingle();
var lamResult = SqlBuilder.LambadaQueryBuilder.GetExpressionValue(expression, isSingle ? ResolveExpressType.FieldSingle : ResolveExpressType.FieldMultiple);
var isSingle = QueryBuilder.IsSingle();
var lamResult = QueryBuilder.GetExpressionValue(expression, isSingle ? ResolveExpressType.FieldSingle : ResolveExpressType.FieldMultiple);
return Sum<TResult>(lamResult.GetResultString());
}
public TResult Avg<TResult>(string avgField)
{
this.Select("Sum(" + avgField + ")");
this.Select(string.Format(QueryBuilder.AvgTemplate, avgField));
var reval = this._ToList<TResult>().SingleOrDefault();
return reval;
}
public TResult Avg<TResult>(Expression<Func<T, object>> expression)
public TResult Avg<TResult>(Expression<Func<T, TResult>> expression)
{
var isSingle = SqlBuilder.LambadaQueryBuilder.IsSingle();
var lamResult = SqlBuilder.LambadaQueryBuilder.GetExpressionValue(expression, isSingle ? ResolveExpressType.FieldSingle : ResolveExpressType.FieldMultiple);
var isSingle = QueryBuilder.IsSingle();
var lamResult = QueryBuilder.GetExpressionValue(expression, isSingle ? ResolveExpressType.FieldSingle : ResolveExpressType.FieldMultiple);
return Avg<TResult>(lamResult.GetResultString());
}
public List<T> ToList()
@@ -444,23 +451,23 @@ namespace SqlSugar
public string ToJsonPage(int pageIndex, int pageSize)
{
return this.Context.RewritableMethods.SerializeObject(this.ToPageList(pageIndex,pageSize));
return this.Context.RewritableMethods.SerializeObject(this.ToPageList(pageIndex, pageSize));
}
public string ToJsonPage(int pageIndex, int pageSize, ref int totalNumber)
{
return this.Context.RewritableMethods.SerializeObject(this.ToPageList(pageIndex, pageSize,ref totalNumber));
return this.Context.RewritableMethods.SerializeObject(this.ToPageList(pageIndex, pageSize, ref totalNumber));
}
public KeyValuePair<string, List<SugarParameter>> ToSql()
{
string sql = SqlBuilder.LambadaQueryBuilder.ToSqlString();
return new KeyValuePair<string, List<SugarParameter>>(sql, SqlBuilder.LambadaQueryBuilder.QueryPars);
string sql = QueryBuilder.ToSqlString();
return new KeyValuePair<string, List<SugarParameter>>(sql, QueryBuilder.QueryPars);
}
public ISugarQueryable<T> With(string withString)
{
SqlBuilder.LambadaQueryBuilder.TableWithString = withString;
QueryBuilder.TableWithString = withString;
return this;
}
@@ -475,24 +482,23 @@ namespace SqlSugar
{
if (pageIndex == 0)
pageIndex = 1;
SqlBuilder.LambadaQueryBuilder.Skip = (pageIndex - 1) * pageSize;
SqlBuilder.LambadaQueryBuilder.Take = pageSize;
QueryBuilder.Skip = (pageIndex - 1) * pageSize;
QueryBuilder.Take = pageSize;
return ToDataTable();
}
public DataTable ToDataTablePage(int pageIndex, int pageSize, ref int totalNumber)
{
totalNumber = this.Count();
return ToDataTablePage(pageIndex,pageSize);
return ToDataTablePage(pageIndex, pageSize);
}
public List<T> ToPageList(int pageIndex, int pageSize)
{
if (pageIndex == 0)
pageIndex = 1;
SqlBuilder.LambadaQueryBuilder.Skip = (pageIndex - 1) * pageSize;
SqlBuilder.LambadaQueryBuilder.Take = pageSize;
QueryBuilder.Skip = (pageIndex - 1) * pageSize;
QueryBuilder.Take = pageSize;
return ToList();
}
@@ -509,27 +515,27 @@ namespace SqlSugar
var reval = InstanceFactory.GetQueryable<TResult>(this.Context.CurrentConnectionConfig);
reval.Context = this.Context;
reval.SqlBuilder = this.SqlBuilder;
reval.SqlBuilder.LambadaQueryBuilder.QueryPars = this.SqlBuilder.LambadaQueryBuilder.QueryPars;
reval.SqlBuilder.LambadaQueryBuilder.SelectValue = expression;
reval.SqlBuilder.QueryBuilder.QueryPars = QueryBuilder.QueryPars;
reval.SqlBuilder.QueryBuilder.SelectValue = expression;
return reval;
}
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 isSingle = QueryBuilder.IsSingle();
var result = QueryBuilder.GetExpressionValue(expression, isSingle ? ResolveExpressType.WhereSingle : ResolveExpressType.WhereMultiple);
QueryBuilder.WhereInfos.Add(SqlBuilder.AppendWhereOrAnd(QueryBuilder.WhereInfos.IsNullOrEmpty(), result.GetResultString()));
}
protected ISugarQueryable<T> _OrderBy(Expression expression, OrderByType type = OrderByType.Asc)
{
var isSingle = SqlBuilder.LambadaQueryBuilder.IsSingle();
var lamResult = SqlBuilder.LambadaQueryBuilder.GetExpressionValue(expression, isSingle ? ResolveExpressType.FieldSingle : ResolveExpressType.FieldMultiple);
OrderBy(lamResult.GetResultString() + " " + type.ToString().ToUpper());
var isSingle = QueryBuilder.IsSingle();
var lamResult = QueryBuilder.GetExpressionValue(expression, isSingle ? ResolveExpressType.FieldSingle : ResolveExpressType.FieldMultiple);
OrderBy(lamResult.GetResultString() + PubConst.Space + type.ToString().ToUpper());
return this;
}
protected ISugarQueryable<T> _GroupBy(Expression expression)
{
var isSingle = SqlBuilder.LambadaQueryBuilder.IsSingle();
var lamResult = SqlBuilder.LambadaQueryBuilder.GetExpressionValue(expression, isSingle ? ResolveExpressType.FieldSingle : ResolveExpressType.FieldMultiple);
var isSingle = QueryBuilder.IsSingle();
var lamResult = QueryBuilder.GetExpressionValue(expression, isSingle ? ResolveExpressType.FieldSingle : ResolveExpressType.FieldMultiple);
GroupBy(lamResult.GetResultString());
return this;
}
@@ -537,7 +543,7 @@ namespace SqlSugar
private List<TResult> _ToList<TResult>()
{
var sqlObj = this.ToSql();
var isComplexModel = Regex.IsMatch(sqlObj.Key, @"AS \[\w+\.\w+\]");
var isComplexModel = QueryBuilder.IsComplexModel(sqlObj.Key);
using (var dataReader = this.Db.GetDataReader(sqlObj.Key, sqlObj.Value.ToArray()))
{
var tType = typeof(TResult);
@@ -547,7 +553,7 @@ namespace SqlSugar
}
else
{
var reval = this.Bind.DataReaderToList<TResult>(tType, dataReader, SqlBuilder.LambadaQueryBuilder.SelectCacheKey);
var reval = this.Bind.DataReaderToList<TResult>(tType, dataReader, QueryBuilder.SelectCacheKey);
return reval;
}
}

View File

@@ -19,7 +19,7 @@ namespace SqlSugar
}
}
public StringBuilder Sql
public StringBuilder sql
{
get
{

View File

@@ -18,7 +18,7 @@ namespace SqlSugar
}
}
public StringBuilder Sql
public StringBuilder sql
{
get
{

View File

@@ -4,12 +4,14 @@ using System.Data.SqlClient;
using System.Linq;
using System.Linq.Expressions;
using System.Text;
using System.Text.RegularExpressions;
namespace SqlSugar
{
public abstract class LambadaQueryBuilder : IDMLBuilder
public abstract class QueryBuilder : IDMLBuilder
{
public LambadaQueryBuilder()
public QueryBuilder()
{
this.QueryPars = new List<SugarParameter>();
}
@@ -21,7 +23,7 @@ namespace SqlSugar
#endregion
#region Service object
public StringBuilder Sql { get; set; }
public StringBuilder sql { get; set; }
public SqlSugarClient Context { get; set; }
public ILambdaExpressions LambdaExpressions { get; set; }
public ISqlBuilder Builder { get; set; }
@@ -83,25 +85,79 @@ namespace SqlSugar
{
get
{
return "SELECT {0} FROM {1} {2} {3} {4}";
return "SELECT {0} FROM {1}{2}{3}{4} ";
}
}
public virtual string JoinTemplate
{
get
{
return " {0} JOIN {1} {2} ON {3} ";
return "{0}JOIN {1}{2}ON {3} ";
}
}
public virtual string PageTempalte
{
get
{
return @"
WITH PageTable AS(
return @"WITH PageTable AS(
{0}
)
SELECT * FROM (SELECT *,ROW_NUMBER() OVER({1}) AS RowIndex FROM PageTable ) T BETWEEN {2} AND {3}";
)
SELECT * FROM (SELECT *,ROW_NUMBER() OVER({1}) AS RowIndex FROM PageTable ) T WHERE RowIndex BETWEEN {2} AND {3}";
}
}
public virtual string DefaultOrderByTemplate
{
get
{
return "ORDER BY GETDATE() ";
}
}
public virtual string OrderByTemplate
{
get
{
return "ORDER BY ";
}
}
public virtual string GroupByTemplate
{
get
{
return "GROUP BY ";
}
}
public virtual string MaxTemplate
{
get
{
return "MAX({0})";
}
}
public virtual string MinTemplate
{
get
{
return "MIN({0})";
}
}
public virtual string SumTemplate
{
get
{
return "SUM({0})";
}
}
public virtual string AvgTemplate
{
get
{
return "AVG({0})";
}
}
public virtual string InTemplate {
get {
return "{0} IN ({1}) ";
}
}
#endregion
@@ -109,14 +165,14 @@ namespace SqlSugar
#region Common Methods
public virtual bool IsSingle()
{
var isSingle = Builder.LambadaQueryBuilder.JoinQueryInfos.IsNullOrEmpty();
var isSingle = Builder.QueryBuilder.JoinQueryInfos.IsNullOrEmpty();
return isSingle;
}
public virtual ExpressionResult GetExpressionValue(Expression expression, ResolveExpressType resolveType)
{
ILambdaExpressions resolveExpress = this.LambdaExpressions;
this.LambdaExpressions.Clear();
resolveExpress.JoinQueryInfos = Builder.LambadaQueryBuilder.JoinQueryInfos;
resolveExpress.JoinQueryInfos = Builder.QueryBuilder.JoinQueryInfos;
resolveExpress.MappingColumns = Context.MappingColumns;
resolveExpress.MappingTables = Context.MappingTables;
resolveExpress.IgnoreComumnList = Context.IgnoreComumns;
@@ -128,22 +184,24 @@ namespace SqlSugar
}
public virtual string ToSqlString()
{
Sql = new StringBuilder();
Sql.AppendFormat(SqlTemplate, GetSelectValue, GetTableNameString, GetWhereValueString, GetGroupByString, GetOrderByString);
sql = new StringBuilder();
sql.AppendFormat(SqlTemplate, GetSelectValue, GetTableNameString, GetWhereValueString, GetGroupByString,(Skip!=null||Take!=null)?null:GetOrderByString);
if (IsCount) { return sql.ToString(); }
if (Skip != null && Take == null)
{
return string.Format(PageTempalte, Sql.ToString(), GetOrderByString, 0,Take);
return string.Format(PageTempalte, sql.ToString(), GetOrderByString, Skip.ObjToInt() + 1, long.MaxValue);
}
else if (Skip == null && Take != null)
{
return string.Format(PageTempalte, Sql.ToString(), GetOrderByString, Skip+1,long.MaxValue);
return string.Format(PageTempalte, sql.ToString(), GetOrderByString, 1, Take.ObjToInt());
}
else if (Skip != null && Take == null)
else if (Skip != null && Take != null)
{
return string.Format(PageTempalte, Sql.ToString(), GetOrderByString, Skip+1, Take);
return string.Format(PageTempalte, sql.ToString(), GetOrderByString, Skip.ObjToInt() + 1, Take);
}
else {
return Sql.ToString();
else
{
return sql.ToString();
}
}
@@ -151,16 +209,16 @@ namespace SqlSugar
{
return string.Format(
this.JoinTemplate,
joinInfo.JoinType.ToString(),
joinInfo.TableName,
joinInfo.ShortName + " " + joinInfo.TableWithString,
joinInfo.JoinType.ToString() + PubConst.Space,
joinInfo.TableName + PubConst.Space,
joinInfo.ShortName + PubConst.Space + joinInfo.TableWithString,
joinInfo.JoinWhere);
}
public virtual void Clear()
{
this.Skip = 0;
this.Take = 0;
this.Sql = null;
this.sql = null;
this.WhereIndex = 0;
this.QueryPars = null;
this.GroupByValue = null;
@@ -168,6 +226,10 @@ namespace SqlSugar
this.WhereInfos = null;
this.JoinQueryInfos = null;
}
public virtual bool IsComplexModel(string sql)
{
return Regex.IsMatch(sql, @"AS \[\w+\.\w+\]");
}
#endregion
#region Get SQL Partial
@@ -175,7 +237,7 @@ namespace SqlSugar
{
get
{
if (this.IsCount) return " COUNT(1) ";
if (this.IsCount) return "COUNT(1) AS [Count] ";
string reval = string.Empty;
if (this.SelectValue == null || this.SelectValue is string)
{
@@ -226,7 +288,7 @@ namespace SqlSugar
if (this.WhereInfos == null) return null;
else
{
return string.Join(" ", this.WhereInfos);
return string.Join(PubConst.Space, this.WhereInfos);
}
}
}
@@ -237,7 +299,7 @@ namespace SqlSugar
if (this.JoinQueryInfos.IsNullOrEmpty()) return null;
else
{
return string.Join(" ", this.JoinQueryInfos.Select(it => this.ToJoinString(it)));
return string.Join(PubConst.Space, this.JoinQueryInfos.Select(it => this.ToJoinString(it)));
}
}
}
@@ -246,22 +308,22 @@ namespace SqlSugar
get
{
var result = Builder.GetTranslationTableName(EntityName);
result += PubConst.Space;
if (this.TableWithString.IsValuable())
{
result += " " + TableWithString;
result += TableWithString + PubConst.Space;
}
if (this.TableShortName.IsValuable())
{
result += " " + TableShortName;
result += (TableShortName + PubConst.Space);
}
if (!this.IsSingle())
{
result = result + " " + GetJoinValueString;
result += GetJoinValueString + PubConst.Space;
}
return result;
}
}
public virtual string GetOrderByString
{
get
@@ -269,7 +331,6 @@ namespace SqlSugar
return this.OrderByValue;
}
}
public virtual string GetGroupByString
{
get

View File

@@ -16,7 +16,7 @@ namespace SqlSugar
{
if (this._Fields.IsNullOrEmpty())
{
this._Fields = Regex.Match(this.Sql.ToString(), @"select(.*?)from", RegexOptions.IgnoreCase).Groups[1].Value;
this._Fields = Regex.Match(this.sql.ToString(), @"select(.*?)from", RegexOptions.IgnoreCase).Groups[1].Value;
if (this._Fields.IsNullOrEmpty())
{
this._Fields = "*";
@@ -30,7 +30,7 @@ namespace SqlSugar
}
}
private StringBuilder _Sql;
public StringBuilder Sql
public StringBuilder sql
{
get {
_Sql = PubMethod.IsNullReturnNew(_Sql);
@@ -58,7 +58,7 @@ namespace SqlSugar
public void Clear()
{
this.Sql = null;
this.sql = null;
}
}
}

View File

@@ -20,7 +20,7 @@ namespace SqlSugar
}
}
public StringBuilder Sql
public StringBuilder sql
{
get
{

View File

@@ -10,7 +10,7 @@ namespace SqlSugar
protected InsertBuilder _InsertBuilder;
protected LambadaQueryBuilder _LambadaQueryBuilder;
protected QueryBuilder _QueryBuilder;
protected SqlQueryBuilder _SqlQueryBuilder;

View File

@@ -17,7 +17,6 @@ namespace SqlSugar
public virtual string SqlParameterKeyWord { get { return "@"; } }
public abstract string GetTranslationTableName(string name);
public abstract string GetTranslationColumnName(string name);
public abstract string GetTableName(string name);
public string AppendWhereOrAnd(bool isWhere, string sqlString)
{
@@ -46,7 +45,7 @@ namespace SqlSugar
set { base._InsertBuilder = value; }
}
public LambadaQueryBuilder LambadaQueryBuilder
public QueryBuilder QueryBuilder
{
get;set;
}

View File

@@ -7,6 +7,7 @@ namespace SqlSugar
internal static class PubConst
{
internal const string AssemblyName = "SqlSugar";
internal const string Space = " ";
internal static Type StringType = typeof(string);
internal static Type IntType = typeof(int);
internal static Type DecType = typeof(decimal);

View File

@@ -17,15 +17,6 @@ namespace SqlSugar
.FirstOrDefault(it => it.EntityName.Equals(name, StringComparison.CurrentCultureIgnoreCase));
return "[" + (mappingInfo == null ? name : mappingInfo.DbTableName) + "]";
}
public override string GetTableName(string name)
{
Check.ArgumentNullException(name, string.Format(ErrorMessage.ObjNotExist, "Table Name Or Column Name"));
var context = this.Context;
var mappingInfo = context
.MappingTables
.FirstOrDefault(it => it.EntityName.Equals(name, StringComparison.CurrentCultureIgnoreCase));
return "[" + (mappingInfo == null ? name : mappingInfo.DbTableName) + "]";
}
public override string GetTranslationColumnName(string name)
{
Check.ArgumentNullException(name, string.Format(ErrorMessage.ObjNotExist, "Table Name Or Column Name"));
@@ -33,7 +24,7 @@ namespace SqlSugar
var mappingInfo = context
.MappingColumns
.FirstOrDefault(it => it.EntityPropertyName.Equals(name, StringComparison.CurrentCultureIgnoreCase));
return (mappingInfo == null ? name : mappingInfo.DbColumnName);
return (mappingInfo == null ? "["+name+"]" : mappingInfo.DbColumnName);
}
}
}

View File

@@ -6,7 +6,7 @@ using System.Threading.Tasks;
namespace SqlSugar
{
public class SqlServerLambadaQueryBuilder: LambadaQueryBuilder
public class SqlServerQueryBuilder: QueryBuilder
{
}
}

View File

@@ -19,10 +19,10 @@ namespace SqlSugar
return reval;
}
public static LambadaQueryBuilder GetLambadaQueryBuilder(IConnectionConfig currentConnectionConfig)
public static QueryBuilder GetQueryBuilder(IConnectionConfig currentConnectionConfig)
{
CheckConfig(currentConnectionConfig);
LambadaQueryBuilder reval = CreateInstance<LambadaQueryBuilder>(GetClassName(currentConnectionConfig.DbType, "LambadaQueryBuilder"), currentConnectionConfig.DbType);
QueryBuilder reval = CreateInstance<QueryBuilder>(GetClassName(currentConnectionConfig.DbType, "QueryBuilder"), currentConnectionConfig.DbType);
return reval;
}

View File

@@ -68,13 +68,13 @@ namespace SqlSugar
int Count();
TResult Max<TResult>(string maxField);
TResult Max<TResult>(Expression<Func<T, object>> expression);
TResult Max<TResult>(Expression<Func<T, TResult>> expression);
TResult Min<TResult>(string minField);
TResult Min<TResult>(Expression<Func<T, object>> expression);
TResult Min<TResult>(Expression<Func<T, TResult>> expression);
TResult Sum<TResult>(string sumField);
TResult Sum<TResult>(Expression<Func<T, object>> expression);
TResult Sum<TResult>(Expression<Func<T, TResult>> expression);
TResult Avg<TResult>(string avgField);
TResult Avg<TResult>(Expression<Func<T, object>> expression);
TResult Avg<TResult>(Expression<Func<T, TResult>> expression);
List<T> ToList();

View File

@@ -9,7 +9,7 @@ namespace SqlSugar
{
string SqlTemplate { get; }
SqlSugarClient Context { get; set; }
StringBuilder Sql { get; set; }
StringBuilder sql { get; set; }
string ToSqlString();
void Clear();
}

View File

@@ -12,14 +12,13 @@ namespace SqlSugar
CommandType CommandType { get; set; }
String AppendWhereOrAnd(bool isWhere, string sqlString);
SqlQueryBuilder SqlQueryBuilder { get; set; }
LambadaQueryBuilder LambadaQueryBuilder { get; set; }
QueryBuilder QueryBuilder { get; set; }
InsertBuilder InsertBuilder { get; set; }
DeleteBuilder DeleteBuilder { get; set; }
UpdateBuilder UpdateBuilder { get; set; }
string SqlParameterKeyWord { get; }
string GetTranslationTableName(string name);
string GetTableName(string name);
string GetTranslationColumnName(string name);
}
}

View File

@@ -59,7 +59,7 @@
<Compile Include="Abstract\QueryableProvider\QueryableProvider.cs" />
<Compile Include="Abstract\SqlBuilderProvider\DMLBuilder\DeleteBuilder.cs" />
<Compile Include="Abstract\SqlBuilderProvider\DMLBuilder\InsertBuilder.cs" />
<Compile Include="Abstract\SqlBuilderProvider\DMLBuilder\LambadaQueryBuilder.cs" />
<Compile Include="Abstract\SqlBuilderProvider\DMLBuilder\QueryBuilder.cs" />
<Compile Include="Abstract\SqlBuilderProvider\DMLBuilder\SqlQueryBuilder.cs" />
<Compile Include="Abstract\SqlBuilderProvider\DMLBuilder\UpdateBuilder.cs" />
<Compile Include="Abstract\SqlBuilderProvider\SqlBuilderAccessory.cs" />

View File

@@ -121,11 +121,11 @@ namespace SqlSugar
reval.Context = this;
var sqlBuilder = InstanceFactory.GetSqlbuilder(base.CurrentConnectionConfig); ;
reval.SqlBuilder = sqlBuilder;
reval.SqlBuilder.LambadaQueryBuilder = InstanceFactory.GetLambadaQueryBuilder(base.CurrentConnectionConfig);
reval.SqlBuilder.LambadaQueryBuilder.Builder = sqlBuilder;
reval.SqlBuilder.Context = reval.SqlBuilder.LambadaQueryBuilder.Context = this;
reval.SqlBuilder.LambadaQueryBuilder.EntityName = typeof(T).Name;
reval.SqlBuilder.LambadaQueryBuilder.LambdaExpressions = InstanceFactory.GetLambdaExpressions(base.CurrentConnectionConfig);
reval.SqlBuilder.QueryBuilder = InstanceFactory.GetQueryBuilder(base.CurrentConnectionConfig);
reval.SqlBuilder.QueryBuilder.Builder = sqlBuilder;
reval.SqlBuilder.Context = reval.SqlBuilder.QueryBuilder.Context = this;
reval.SqlBuilder.QueryBuilder.EntityName = typeof(T).Name;
reval.SqlBuilder.QueryBuilder.LambdaExpressions = InstanceFactory.GetLambdaExpressions(base.CurrentConnectionConfig);
return reval;
}
/// <summary>
@@ -134,9 +134,9 @@ namespace SqlSugar
public virtual ISugarQueryable<SugarDynamic> Queryable(string tableName, string shortName, string widthString = null)
{
var queryable = Queryable<SugarDynamic>();
queryable.SqlBuilder.LambadaQueryBuilder.EntityName = tableName;
queryable.SqlBuilder.LambadaQueryBuilder.TableShortName = shortName;
queryable.SqlBuilder.LambadaQueryBuilder.TableWithString = widthString;
queryable.SqlBuilder.QueryBuilder.EntityName = tableName;
queryable.SqlBuilder.QueryBuilder.TableShortName = shortName;
queryable.SqlBuilder.QueryBuilder.TableWithString = widthString;
return queryable;
}
/// <summary>
@@ -145,80 +145,80 @@ namespace SqlSugar
public virtual ISugarQueryable<T> Queryable<T>(string shortName, string widthString = null) where T : class, new()
{
var queryable = Queryable<T>();
queryable.SqlBuilder.LambadaQueryBuilder.TableShortName = shortName;
queryable.SqlBuilder.LambadaQueryBuilder.TableWithString = widthString;
queryable.SqlBuilder.QueryBuilder.TableShortName = shortName;
queryable.SqlBuilder.QueryBuilder.TableWithString = widthString;
return queryable;
}
public virtual ISugarQueryable<T> Queryable<T, T2>(Expression<Func<T, T2, object[]>> joinExpression) where T : class, new()
{
var queryable = Queryable<T>();
string shortName = string.Empty;
queryable.SqlBuilder.LambadaQueryBuilder.JoinQueryInfos = base.GetJoinInfos(joinExpression, this, ref shortName, typeof(T2));
queryable.SqlBuilder.LambadaQueryBuilder.TableShortName = shortName;
queryable.SqlBuilder.QueryBuilder.JoinQueryInfos = base.GetJoinInfos(joinExpression, this, ref shortName, typeof(T2));
queryable.SqlBuilder.QueryBuilder.TableShortName = shortName;
return queryable;
}
public virtual ISugarQueryable<T> Queryable<T, T2, T3>(Expression<Func<T, T2, T3, object[]>> joinExpression) where T : class, new()
{
var queryable = Queryable<T>();
string shortName = string.Empty;
queryable.SqlBuilder.LambadaQueryBuilder.JoinQueryInfos = base.GetJoinInfos(joinExpression, this, ref shortName, typeof(T2), typeof(T3));
queryable.SqlBuilder.LambadaQueryBuilder.TableShortName = shortName;
queryable.SqlBuilder.QueryBuilder.JoinQueryInfos = base.GetJoinInfos(joinExpression, this, ref shortName, typeof(T2), typeof(T3));
queryable.SqlBuilder.QueryBuilder.TableShortName = shortName;
return queryable;
}
public virtual ISugarQueryable<T> Queryable<T, T2, T3, T4>(Expression<Func<T, T2, T3, T4, object[]>> joinExpression) where T : class, new()
{
var queryable = Queryable<T>();
string shortName = string.Empty;
queryable.SqlBuilder.LambadaQueryBuilder.JoinQueryInfos = base.GetJoinInfos(joinExpression, this, ref shortName, typeof(T2), typeof(T3), typeof(T4));
queryable.SqlBuilder.LambadaQueryBuilder.TableShortName = shortName;
queryable.SqlBuilder.QueryBuilder.JoinQueryInfos = base.GetJoinInfos(joinExpression, this, ref shortName, typeof(T2), typeof(T3), typeof(T4));
queryable.SqlBuilder.QueryBuilder.TableShortName = shortName;
return queryable;
}
public virtual ISugarQueryable<T> Queryable<T, T2, T3, T4, T5>(Expression<Func<T, T2, T3, T4, T5, object[]>> joinExpression) where T : class, new()
{
var queryable = Queryable<T>();
string shortName = string.Empty;
queryable.SqlBuilder.LambadaQueryBuilder.JoinQueryInfos = base.GetJoinInfos(joinExpression, this, ref shortName, typeof(T2), typeof(T3), typeof(T4), typeof(T5));
queryable.SqlBuilder.LambadaQueryBuilder.TableShortName = shortName;
queryable.SqlBuilder.QueryBuilder.JoinQueryInfos = base.GetJoinInfos(joinExpression, this, ref shortName, typeof(T2), typeof(T3), typeof(T4), typeof(T5));
queryable.SqlBuilder.QueryBuilder.TableShortName = shortName;
return queryable;
}
public virtual ISugarQueryable<T> Queryable<T, T2, T3, T4, T5, T6>(Expression<Func<T, T2, T3, T4, T5, T6, object[]>> joinExpression) where T : class, new()
{
var queryable = Queryable<T>();
string shortName = string.Empty;
queryable.SqlBuilder.LambadaQueryBuilder.JoinQueryInfos = base.GetJoinInfos(joinExpression, this, ref shortName, typeof(T2), typeof(T3), typeof(T4), typeof(T5), typeof(T6));
queryable.SqlBuilder.LambadaQueryBuilder.TableShortName = shortName;
queryable.SqlBuilder.QueryBuilder.JoinQueryInfos = base.GetJoinInfos(joinExpression, this, ref shortName, typeof(T2), typeof(T3), typeof(T4), typeof(T5), typeof(T6));
queryable.SqlBuilder.QueryBuilder.TableShortName = shortName;
return queryable;
}
public virtual ISugarQueryable<T> Queryable<T, T2, T3, T4, T5, T6, T7>(Expression<Func<T, T2, T3, T4, T5, T6, T7, object[]>> joinExpression) where T : class, new()
{
var queryable = Queryable<T>();
string shortName = string.Empty;
queryable.SqlBuilder.LambadaQueryBuilder.JoinQueryInfos = base.GetJoinInfos(joinExpression, this, ref shortName, typeof(T2), typeof(T3), typeof(T4), typeof(T5), typeof(T6), typeof(T7));
queryable.SqlBuilder.LambadaQueryBuilder.TableShortName = shortName;
queryable.SqlBuilder.QueryBuilder.JoinQueryInfos = base.GetJoinInfos(joinExpression, this, ref shortName, typeof(T2), typeof(T3), typeof(T4), typeof(T5), typeof(T6), typeof(T7));
queryable.SqlBuilder.QueryBuilder.TableShortName = shortName;
return queryable;
}
public virtual ISugarQueryable<T> Queryable<T, T2, T3, T4, T5, T6, T7, T8>(Expression<Func<T, T2, T3, T4, T5, T6, T7, T8, object[]>> joinExpression) where T : class, new()
{
var queryable = Queryable<T>();
string shortName = string.Empty;
queryable.SqlBuilder.LambadaQueryBuilder.JoinQueryInfos = base.GetJoinInfos(joinExpression, this, ref shortName, typeof(T2), typeof(T3), typeof(T4), typeof(T5), typeof(T6), typeof(T7), typeof(T8));
queryable.SqlBuilder.LambadaQueryBuilder.TableShortName = shortName;
queryable.SqlBuilder.QueryBuilder.JoinQueryInfos = base.GetJoinInfos(joinExpression, this, ref shortName, typeof(T2), typeof(T3), typeof(T4), typeof(T5), typeof(T6), typeof(T7), typeof(T8));
queryable.SqlBuilder.QueryBuilder.TableShortName = shortName;
return queryable;
}
public virtual ISugarQueryable<T> Queryable<T, T2, T3, T4, T5, T6, T7, T8, T9>(Expression<Func<T, T2, T3, T4, T5, T6, T7, T8, T9, object[]>> joinExpression) where T : class, new()
{
var queryable = Queryable<T>();
string shortName = string.Empty;
queryable.SqlBuilder.LambadaQueryBuilder.JoinQueryInfos = base.GetJoinInfos(joinExpression, this, ref shortName, typeof(T2), typeof(T3), typeof(T4), typeof(T5), typeof(T6), typeof(T7), typeof(T8), typeof(T9));
queryable.SqlBuilder.LambadaQueryBuilder.TableShortName = shortName;
queryable.SqlBuilder.QueryBuilder.JoinQueryInfos = base.GetJoinInfos(joinExpression, this, ref shortName, typeof(T2), typeof(T3), typeof(T4), typeof(T5), typeof(T6), typeof(T7), typeof(T8), typeof(T9));
queryable.SqlBuilder.QueryBuilder.TableShortName = shortName;
return queryable;
}
public virtual ISugarQueryable<T> Queryable<T, T2, T3, T4, T5, T6, T7, T8, T9, T10>(Expression<Func<T, T2, T3, T4, T5, T6, T7, T8, T10, object[]>> joinExpression) where T : class, new()
{
var queryable = Queryable<T>();
string shortName = string.Empty;
queryable.SqlBuilder.LambadaQueryBuilder.JoinQueryInfos = base.GetJoinInfos(joinExpression, this, ref shortName, typeof(T2), typeof(T3), typeof(T4), typeof(T5), typeof(T6), typeof(T7), typeof(T8), typeof(T9), typeof(T10));
queryable.SqlBuilder.LambadaQueryBuilder.TableShortName = shortName;
queryable.SqlBuilder.QueryBuilder.JoinQueryInfos = base.GetJoinInfos(joinExpression, this, ref shortName, typeof(T2), typeof(T3), typeof(T4), typeof(T5), typeof(T6), typeof(T7), typeof(T8), typeof(T9), typeof(T10));
queryable.SqlBuilder.QueryBuilder.TableShortName = shortName;
return queryable;
}
@@ -226,7 +226,7 @@ namespace SqlSugar
{
var dbPars = this.Database.GetParameters(pars);
var builder = InstanceFactory.GetSqlbuilder(base.CurrentConnectionConfig);
builder.SqlQueryBuilder.Sql.Append(sql);
builder.SqlQueryBuilder.sql.Append(sql);
using (var dataReader = this.Database.GetDataReader(sql, dbPars))
{
var reval = this.Database.DbBind.DataReaderToList<T>(typeof(T), dataReader, builder.SqlQueryBuilder.Fields);