This commit is contained in:
sunkaixuan 2017-09-11 12:26:03 +08:00
parent 2d4c7ee9e2
commit fb1fa5d769
2 changed files with 100 additions and 32 deletions

View File

@ -29,7 +29,8 @@ namespace SqlSugar
{ {
return this.SqlBuilder.QueryBuilder; return this.SqlBuilder.QueryBuilder;
} }
set { set
{
this.SqlBuilder.QueryBuilder = value; this.SqlBuilder.QueryBuilder = value;
} }
} }
@ -48,22 +49,12 @@ namespace SqlSugar
public virtual ISugarQueryable<T> AS<T2>(string tableName) public virtual ISugarQueryable<T> AS<T2>(string tableName)
{ {
var entityName = typeof(T2).Name; var entityName = typeof(T2).Name;
IsAs = true; return _As(tableName, entityName);
OldMappingTableList = this.Context.MappingTables;
this.Context.MappingTables = this.Context.Utilities.TranslateCopy(this.Context.MappingTables);
this.Context.MappingTables.Add(entityName, tableName);
this.QueryableMappingTableList = this.Context.MappingTables;
return this;
} }
public ISugarQueryable<T> AS(string tableName) public ISugarQueryable<T> AS(string tableName)
{ {
var entityName = typeof(T).Name; var entityName = typeof(T).Name;
IsAs = true; return _As(tableName, entityName);
OldMappingTableList = this.Context.MappingTables;
this.Context.MappingTables = this.Context.Utilities.TranslateCopy(this.Context.MappingTables);
this.Context.MappingTables.Add(entityName, tableName);
this.QueryableMappingTableList = this.Context.MappingTables;
return this;
} }
public virtual ISugarQueryable<T> With(string withString) public virtual ISugarQueryable<T> With(string withString)
{ {
@ -73,16 +64,7 @@ namespace SqlSugar
public virtual ISugarQueryable<T> Filter(string FilterName, bool isDisabledGobalFilter = false) public virtual ISugarQueryable<T> Filter(string FilterName, bool isDisabledGobalFilter = false)
{ {
QueryBuilder.IsDisabledGobalFilter = isDisabledGobalFilter; _Filter(FilterName, isDisabledGobalFilter);
if (this.Context.QueryFilter.GeFilterList.IsValuable() && FilterName.IsValuable())
{
var list = this.Context.QueryFilter.GeFilterList.Where(it => it.FilterName == FilterName && it.IsJoinQuery == !QueryBuilder.IsSingle());
foreach (var item in list)
{
var filterResult = item.FilterValue(this.Context);
Where(SqlBuilder.AppendWhereOrAnd(QueryBuilder.WhereInfos.IsNullOrEmpty(), filterResult.Sql), filterResult.Parameters);
}
}
return this; return this;
} }
@ -98,6 +80,12 @@ namespace SqlSugar
QueryBuilder.Parameters.AddRange(parameters); QueryBuilder.Parameters.AddRange(parameters);
return this; return this;
} }
public virtual ISugarQueryable<T> AddParameters(List<SugarParameter> parameters)
{
if (parameters != null)
QueryBuilder.Parameters.AddRange(parameters);
return this;
}
public virtual ISugarQueryable<T> AddParameters(SugarParameter parameter) public virtual ISugarQueryable<T> AddParameters(SugarParameter parameter)
{ {
if (parameter != null) if (parameter != null)
@ -363,7 +351,7 @@ namespace SqlSugar
public virtual T Single(Expression<Func<T, bool>> expression) public virtual T Single(Expression<Func<T, bool>> expression)
{ {
_Where(expression); _Where(expression);
var result=Single(); var result = Single();
this.QueryBuilder.WhereInfos.Remove(this.QueryBuilder.WhereInfos.Last()); this.QueryBuilder.WhereInfos.Remove(this.QueryBuilder.WhereInfos.Last());
return result; return result;
} }
@ -389,7 +377,7 @@ namespace SqlSugar
public virtual T First(Expression<Func<T, bool>> expression) public virtual T First(Expression<Func<T, bool>> expression)
{ {
_Where(expression); _Where(expression);
var result= First(); var result = First();
this.QueryBuilder.WhereInfos.Remove(this.QueryBuilder.WhereInfos.Last()); this.QueryBuilder.WhereInfos.Remove(this.QueryBuilder.WhereInfos.Last());
return result; return result;
} }
@ -785,19 +773,19 @@ namespace SqlSugar
Task<string> result = new Task<string>(() => Task<string> result = new Task<string>(() =>
{ {
ISugarQueryable<T> asyncQueryable = CopyQueryable(); ISugarQueryable<T> asyncQueryable = CopyQueryable();
return asyncQueryable.ToJsonPage(pageIndex,pageSize); return asyncQueryable.ToJsonPage(pageIndex, pageSize);
}); });
result.Start(); result.Start();
return result; return result;
} }
public Task<KeyValuePair<string,int>> ToJsonPageAsync(int pageIndex, int pageSize, int totalNumber) public Task<KeyValuePair<string, int>> ToJsonPageAsync(int pageIndex, int pageSize, int totalNumber)
{ {
Task<KeyValuePair<string, int>> result = new Task<KeyValuePair<string, int>>(() => Task<KeyValuePair<string, int>> result = new Task<KeyValuePair<string, int>>(() =>
{ {
int totalNumberAsync = 0; int totalNumberAsync = 0;
ISugarQueryable<T> asyncQueryable = CopyQueryable(); ISugarQueryable<T> asyncQueryable = CopyQueryable();
var list= asyncQueryable.ToJsonPage(pageIndex, pageSize,ref totalNumberAsync); var list = asyncQueryable.ToJsonPage(pageIndex, pageSize, ref totalNumberAsync);
return new KeyValuePair<string, int>(list, totalNumberAsync); return new KeyValuePair<string, int>(list, totalNumberAsync);
}); });
result.Start(); result.Start();
@ -826,7 +814,7 @@ namespace SqlSugar
return result; return result;
} }
public Task<KeyValuePair<DataTable, int>> ToDataTablePageAsync(int pageIndex, int pageSize,int totalNumber) public Task<KeyValuePair<DataTable, int>> ToDataTablePageAsync(int pageIndex, int pageSize, int totalNumber)
{ {
Task<KeyValuePair<DataTable, int>> result = new Task<KeyValuePair<DataTable, int>>(() => Task<KeyValuePair<DataTable, int>> result = new Task<KeyValuePair<DataTable, int>>(() =>
{ {
@ -931,6 +919,28 @@ namespace SqlSugar
var lamResult = QueryBuilder.GetExpressionValue(expression, isSingle ? ResolveExpressType.FieldSingle : ResolveExpressType.FieldMultiple); var lamResult = QueryBuilder.GetExpressionValue(expression, isSingle ? ResolveExpressType.FieldSingle : ResolveExpressType.FieldMultiple);
return Sum<TResult>(lamResult.GetResultString()); return Sum<TResult>(lamResult.GetResultString());
} }
protected ISugarQueryable<T> _As(string tableName, string entityName)
{
IsAs = true;
OldMappingTableList = this.Context.MappingTables;
this.Context.MappingTables = this.Context.Utilities.TranslateCopy(this.Context.MappingTables);
this.Context.MappingTables.Add(entityName, tableName);
this.QueryableMappingTableList = this.Context.MappingTables;
return this;
}
protected void _Filter(string FilterName, bool isDisabledGobalFilter)
{
QueryBuilder.IsDisabledGobalFilter = isDisabledGobalFilter;
if (this.Context.QueryFilter.GeFilterList.IsValuable() && FilterName.IsValuable())
{
var list = this.Context.QueryFilter.GeFilterList.Where(it => it.FilterName == FilterName && it.IsJoinQuery == !QueryBuilder.IsSingle());
foreach (var item in list)
{
var filterResult = item.FilterValue(this.Context);
Where(SqlBuilder.AppendWhereOrAnd(QueryBuilder.WhereInfos.IsNullOrEmpty(), filterResult.Sql), filterResult.Parameters);
}
}
}
public ISugarQueryable<T> _PartitionBy(Expression expression) public ISugarQueryable<T> _PartitionBy(Expression expression)
{ {
LambdaExpression lambda = expression as LambdaExpression; LambdaExpression lambda = expression as LambdaExpression;
@ -1052,7 +1062,7 @@ namespace SqlSugar
} }
private ISugarQueryable<T> CopyQueryable() private ISugarQueryable<T> CopyQueryable()
{ {
var asyncContext = this.Context.Utilities.CopyContext(this.Context,true); var asyncContext = this.Context.Utilities.CopyContext(this.Context, true);
asyncContext.CurrentConnectionConfig.IsAutoCloseConnection = true; asyncContext.CurrentConnectionConfig.IsAutoCloseConnection = true;
var asyncQueryable = asyncContext.Queryable<ExpandoObject>().Select<T>(string.Empty); var asyncQueryable = asyncContext.Queryable<ExpandoObject>().Select<T>(string.Empty);
@ -1193,6 +1203,53 @@ namespace SqlSugar
return this; return this;
} }
#endregion #endregion
#region Other
public new ISugarQueryable<T, T2> AS<AsT>(string tableName)
{
var entityName = typeof(AsT).Name;
_As(tableName, entityName);
return this;
}
public new ISugarQueryable<T, T2> AS(string tableName)
{
var entityName = typeof(T).Name;
_As(tableName, entityName);
return this;
}
public new ISugarQueryable<T, T2> Filter(string FilterName, bool isDisabledGobalFilter = false) {
_Filter(FilterName, isDisabledGobalFilter);
return this;
}
public new ISugarQueryable<T, T2> AddParameters(object parameters) {
if (parameters != null)
QueryBuilder.Parameters.AddRange(Context.Ado.GetParameters(parameters));
return this;
}
public new ISugarQueryable<T, T2> AddParameters(SugarParameter[] parameters) {
if (parameters != null)
QueryBuilder.Parameters.AddRange(parameters);
return this;
}
public new ISugarQueryable<T, T2> AddParameters(List<SugarParameter> parameters) {
if (parameters != null)
QueryBuilder.Parameters.AddRange(parameters);
return this;
}
public new ISugarQueryable<T, T2> AddJoinInfo(string tableName, string shortName, string joinWhere, JoinType type = JoinType.Left) {
QueryBuilder.JoinIndex = +1;
QueryBuilder.JoinQueryInfos
.Add(new JoinQueryInfo()
{
JoinIndex = QueryBuilder.JoinIndex,
TableName = tableName,
ShortName = shortName,
JoinType = type,
JoinWhere = joinWhere
});
return this;
}
#endregion
} }
#endregion #endregion
#region T3 #region T3

View File

@ -19,8 +19,9 @@ namespace SqlSugar
ISugarQueryable<T> AS(string tableName); ISugarQueryable<T> AS(string tableName);
ISugarQueryable<T> With(string withString); ISugarQueryable<T> With(string withString);
ISugarQueryable<T> Filter(string FilterName, bool isDisabledGobalFilter= false); ISugarQueryable<T> Filter(string FilterName, bool isDisabledGobalFilter= false);
ISugarQueryable<T> AddParameters(object pars); ISugarQueryable<T> AddParameters(object parameters);
ISugarQueryable<T> AddParameters(SugarParameter[] pars); ISugarQueryable<T> AddParameters(SugarParameter[] parameters);
ISugarQueryable<T> AddParameters(List<SugarParameter> parameters);
ISugarQueryable<T> AddJoinInfo(string tableName, string shortName, string joinWhere, JoinType type = JoinType.Left); ISugarQueryable<T> AddJoinInfo(string tableName, string shortName, string joinWhere, JoinType type = JoinType.Left);
ISugarQueryable<T> Where(Expression<Func<T, bool>> expression); ISugarQueryable<T> Where(Expression<Func<T, bool>> expression);
@ -158,6 +159,16 @@ namespace SqlSugar
new ISugarQueryable<T,T2> In<FieldType>(Expression<Func<T, object>> expression, List<FieldType> inValues); new ISugarQueryable<T,T2> In<FieldType>(Expression<Func<T, object>> expression, List<FieldType> inValues);
new ISugarQueryable<T,T2> In<FieldType>(Expression<Func<T, object>> expression, ISugarQueryable<FieldType> childQueryExpression); new ISugarQueryable<T,T2> In<FieldType>(Expression<Func<T, object>> expression, ISugarQueryable<FieldType> childQueryExpression);
#endregion #endregion
#region Other
new ISugarQueryable<T,T2> AS<AsT>(string tableName);
new ISugarQueryable<T,T2> AS(string tableName);
new ISugarQueryable<T,T2> Filter(string FilterName, bool isDisabledGobalFilter = false);
new ISugarQueryable<T,T2> AddParameters(object parameters);
new ISugarQueryable<T,T2> AddParameters(SugarParameter[] parameters);
new ISugarQueryable<T, T2> AddParameters(List<SugarParameter> parameters);
new ISugarQueryable<T,T2> AddJoinInfo(string tableName, string shortName, string joinWhere, JoinType type = JoinType.Left);
#endregion
} }
public partial interface ISugarQueryable<T, T2, T3> : ISugarQueryable<T> public partial interface ISugarQueryable<T, T2, T3> : ISugarQueryable<T>
{ {