mirror of
https://gitee.com/dotnetchina/SqlSugar.git
synced 2025-09-19 10:08:19 +08:00
-
This commit is contained in:
@@ -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();
|
||||
|
||||
|
||||
|
@@ -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");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -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)
|
||||
{
|
||||
|
@@ -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;
|
||||
}
|
||||
}
|
||||
|
@@ -19,7 +19,7 @@ namespace SqlSugar
|
||||
}
|
||||
}
|
||||
|
||||
public StringBuilder Sql
|
||||
public StringBuilder sql
|
||||
{
|
||||
get
|
||||
{
|
||||
|
@@ -18,7 +18,7 @@ namespace SqlSugar
|
||||
}
|
||||
}
|
||||
|
||||
public StringBuilder Sql
|
||||
public StringBuilder sql
|
||||
{
|
||||
get
|
||||
{
|
||||
|
@@ -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
|
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -20,7 +20,7 @@ namespace SqlSugar
|
||||
}
|
||||
}
|
||||
|
||||
public StringBuilder Sql
|
||||
public StringBuilder sql
|
||||
{
|
||||
get
|
||||
{
|
||||
|
@@ -10,7 +10,7 @@ namespace SqlSugar
|
||||
|
||||
protected InsertBuilder _InsertBuilder;
|
||||
|
||||
protected LambadaQueryBuilder _LambadaQueryBuilder;
|
||||
protected QueryBuilder _QueryBuilder;
|
||||
|
||||
protected SqlQueryBuilder _SqlQueryBuilder;
|
||||
|
||||
|
@@ -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;
|
||||
}
|
||||
|
@@ -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);
|
||||
|
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -6,7 +6,7 @@ using System.Threading.Tasks;
|
||||
|
||||
namespace SqlSugar
|
||||
{
|
||||
public class SqlServerLambadaQueryBuilder: LambadaQueryBuilder
|
||||
public class SqlServerQueryBuilder: QueryBuilder
|
||||
{
|
||||
}
|
||||
}
|
||||
|
@@ -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;
|
||||
}
|
||||
|
||||
|
@@ -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();
|
||||
|
||||
|
@@ -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();
|
||||
}
|
||||
|
@@ -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);
|
||||
}
|
||||
}
|
||||
|
@@ -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" />
|
||||
|
@@ -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);
|
||||
|
Reference in New Issue
Block a user