mirror of
https://gitee.com/dotnetchina/SqlSugar.git
synced 2025-09-18 17:48:11 +08:00
-
This commit is contained in:
@@ -26,6 +26,15 @@ namespace OrmTest.Demo
|
||||
StoredProcedure();
|
||||
Enum();
|
||||
Simple();
|
||||
Async();
|
||||
}
|
||||
|
||||
private static void Async()
|
||||
{
|
||||
var db = GetInstance();
|
||||
var list= db.Queryable<Student>().Where(it => it.Id == 1).SingleAsync();
|
||||
list.Start();
|
||||
list.Wait();
|
||||
}
|
||||
|
||||
private static void Simple()
|
||||
|
@@ -29,6 +29,9 @@ namespace SqlSugar
|
||||
{
|
||||
return this.SqlBuilder.QueryBuilder;
|
||||
}
|
||||
set {
|
||||
this.SqlBuilder.QueryBuilder = value;
|
||||
}
|
||||
}
|
||||
public EntityInfo EntityInfo
|
||||
{
|
||||
@@ -340,7 +343,8 @@ namespace SqlSugar
|
||||
{
|
||||
return default(T);
|
||||
}
|
||||
else if (reval.Count == 2) {
|
||||
else if (reval.Count == 2)
|
||||
{
|
||||
Check.Exception(true, ".Single() result must not exceed one . You can use.First()");
|
||||
return default(T);
|
||||
}
|
||||
@@ -564,122 +568,248 @@ namespace SqlSugar
|
||||
#region Async methods
|
||||
public Task<T> SingleAsync()
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
Task<T> result = new Task<T>(() =>
|
||||
{
|
||||
ISugarQueryable<T> asyncQueryable = CopyQueryable();
|
||||
return asyncQueryable.Single();
|
||||
});
|
||||
return result;
|
||||
}
|
||||
|
||||
public Task<T> SingleAsync(Expression<Func<T, bool>> expression)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
Task<T> result = new Task<T>(() =>
|
||||
{
|
||||
ISugarQueryable<T> asyncQueryable = CopyQueryable();
|
||||
return asyncQueryable.Single(expression);
|
||||
});
|
||||
return result;
|
||||
}
|
||||
|
||||
public Task<T> FirstAsync()
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
Task<T> result = new Task<T>(() =>
|
||||
{
|
||||
ISugarQueryable<T> asyncQueryable = CopyQueryable();
|
||||
return asyncQueryable.First();
|
||||
});
|
||||
return result;
|
||||
}
|
||||
|
||||
public Task<T> FirstAsync(Expression<Func<T, bool>> expression)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
Task<T> result = new Task<T>(() =>
|
||||
{
|
||||
ISugarQueryable<T> asyncQueryable = CopyQueryable();
|
||||
return asyncQueryable.First(expression);
|
||||
});
|
||||
return result;
|
||||
}
|
||||
|
||||
public Task<bool> AnyAsync(Expression<Func<T, bool>> expression)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
Task<bool> result = new Task<bool>(() =>
|
||||
{
|
||||
ISugarQueryable<T> asyncQueryable = CopyQueryable();
|
||||
return asyncQueryable.Any(expression);
|
||||
});
|
||||
return result;
|
||||
}
|
||||
|
||||
public Task<bool> AnyAsync()
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
Task<bool> result = new Task<bool>(() =>
|
||||
{
|
||||
ISugarQueryable<T> asyncQueryable = CopyQueryable();
|
||||
return asyncQueryable.Any();
|
||||
});
|
||||
return result;
|
||||
}
|
||||
|
||||
public Task<int> CountAsync()
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
Task<int> result = new Task<int>(() =>
|
||||
{
|
||||
ISugarQueryable<T> asyncQueryable = CopyQueryable();
|
||||
return asyncQueryable.Count();
|
||||
});
|
||||
return result;
|
||||
}
|
||||
|
||||
public Task<TResult> MaxAsync<TResult>(string maxField)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
Task<TResult> result = new Task<TResult>(() =>
|
||||
{
|
||||
ISugarQueryable<T> asyncQueryable = CopyQueryable();
|
||||
return asyncQueryable.Max<TResult>(maxField);
|
||||
});
|
||||
return result;
|
||||
}
|
||||
|
||||
public Task<TResult> MaxAsync<TResult>(Expression<Func<T, TResult>> expression)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
Task<TResult> result = new Task<TResult>(() =>
|
||||
{
|
||||
ISugarQueryable<T> asyncQueryable = CopyQueryable();
|
||||
return asyncQueryable.Max<TResult>(expression);
|
||||
});
|
||||
return result;
|
||||
}
|
||||
|
||||
public Task<TResult> MinAsync<TResult>(string minField)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
Task<TResult> result = new Task<TResult>(() =>
|
||||
{
|
||||
ISugarQueryable<T> asyncQueryable = CopyQueryable();
|
||||
return asyncQueryable.Min<TResult>(minField);
|
||||
});
|
||||
return result;
|
||||
}
|
||||
|
||||
public Task<TResult> MinAsync<TResult>(Expression<Func<T, TResult>> expression)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
Task<TResult> result = new Task<TResult>(() =>
|
||||
{
|
||||
ISugarQueryable<T> asyncQueryable = CopyQueryable();
|
||||
return asyncQueryable.Min<TResult>(expression);
|
||||
});
|
||||
return result;
|
||||
}
|
||||
|
||||
public Task<TResult> SumAsync<TResult>(string sumField)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
Task<TResult> result = new Task<TResult>(() =>
|
||||
{
|
||||
ISugarQueryable<T> asyncQueryable = CopyQueryable();
|
||||
return asyncQueryable.Sum<TResult>(sumField);
|
||||
});
|
||||
return result;
|
||||
}
|
||||
|
||||
public Task<TResult> SumAsync<TResult>(Expression<Func<T, TResult>> expression)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
Task<TResult> result = new Task<TResult>(() =>
|
||||
{
|
||||
ISugarQueryable<T> asyncQueryable = CopyQueryable();
|
||||
return asyncQueryable.Sum<TResult>(expression);
|
||||
});
|
||||
return result;
|
||||
}
|
||||
|
||||
public Task<TResult> AvgAsync<TResult>(string avgField)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
Task<TResult> result = new Task<TResult>(() =>
|
||||
{
|
||||
ISugarQueryable<T> asyncQueryable = CopyQueryable();
|
||||
return asyncQueryable.Avg<TResult>(avgField);
|
||||
});
|
||||
return result;
|
||||
}
|
||||
|
||||
public Task<TResult> AvgAsync<TResult>(Expression<Func<T, TResult>> expression)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
Task<TResult> result = new Task<TResult>(() =>
|
||||
{
|
||||
ISugarQueryable<T> asyncQueryable = CopyQueryable();
|
||||
return asyncQueryable.Avg<TResult>(expression);
|
||||
});
|
||||
return result;
|
||||
}
|
||||
|
||||
public Task<List<T>> ToListAsync()
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
Task<List<T>> result = new Task<List<T>>(() =>
|
||||
{
|
||||
ISugarQueryable<T> asyncQueryable = CopyQueryable();
|
||||
return asyncQueryable.ToList();
|
||||
});
|
||||
return result;
|
||||
}
|
||||
|
||||
public Task<string> ToJsonAsync()
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
Task<string> result = new Task<string>(() =>
|
||||
{
|
||||
ISugarQueryable<T> asyncQueryable = CopyQueryable();
|
||||
return asyncQueryable.ToJson();
|
||||
});
|
||||
return result;
|
||||
}
|
||||
|
||||
public Task<string> ToJsonPageAsync(int pageIndex, int pageSize)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
Task<string> result = new Task<string>(() =>
|
||||
{
|
||||
ISugarQueryable<T> asyncQueryable = CopyQueryable();
|
||||
return asyncQueryable.ToJsonPage(pageIndex,pageSize);
|
||||
});
|
||||
return result;
|
||||
}
|
||||
|
||||
public Task<string> ToJsonPageAsync(int pageIndex, int pageSize, ref int totalNumber)
|
||||
public Task<KeyValuePair<string,int>> ToJsonPageAsync(int pageIndex, int pageSize, int totalNumber)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
Task<KeyValuePair<string, int>> result = new Task<KeyValuePair<string, int>>(() =>
|
||||
{
|
||||
int totalNumberAsync = 0;
|
||||
ISugarQueryable<T> asyncQueryable = CopyQueryable();
|
||||
var list= asyncQueryable.ToJsonPage(pageIndex, pageSize,ref totalNumberAsync);
|
||||
return new KeyValuePair<string, int>(list, totalNumberAsync);
|
||||
});
|
||||
return result;
|
||||
}
|
||||
|
||||
public Task<DataTable> ToDataTableAsync()
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
Task<DataTable> result = new Task<DataTable>(() =>
|
||||
{
|
||||
ISugarQueryable<T> asyncQueryable = CopyQueryable();
|
||||
return asyncQueryable.ToDataTable();
|
||||
});
|
||||
return result;
|
||||
}
|
||||
|
||||
public Task<DataTable> ToDataTablePageAsync(int pageIndex, int pageSize)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
Task<DataTable> result = new Task<DataTable>(() =>
|
||||
{
|
||||
ISugarQueryable<T> asyncQueryable = CopyQueryable();
|
||||
return asyncQueryable.ToDataTablePage(pageIndex, pageSize);
|
||||
});
|
||||
return result;
|
||||
}
|
||||
|
||||
public Task<DataTable> ToDataTablePageAsync(int pageIndex, int pageSize, ref int totalNumber)
|
||||
public Task<KeyValuePair<DataTable, int>> ToDataTablePageAsync(int pageIndex, int pageSize,int totalNumber)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
Task<KeyValuePair<DataTable, int>> result = new Task<KeyValuePair<DataTable, int>>(() =>
|
||||
{
|
||||
int totalNumberAsync = 0;
|
||||
ISugarQueryable<T> asyncQueryable = CopyQueryable();
|
||||
var list = asyncQueryable.ToDataTablePage(pageIndex, pageSize, ref totalNumberAsync);
|
||||
return new KeyValuePair<DataTable, int>(list, totalNumberAsync);
|
||||
});
|
||||
return result;
|
||||
}
|
||||
|
||||
public Task<List<T>> ToPageListAsync(int pageIndex, int pageSize)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
Task<List<T>> result = new Task<List<T>>(() =>
|
||||
{
|
||||
ISugarQueryable<T> asyncQueryable = CopyQueryable();
|
||||
return asyncQueryable.ToPageList(pageIndex, pageSize);
|
||||
});
|
||||
return result;
|
||||
}
|
||||
|
||||
public Task<List<T>> ToPageListAsync(int pageIndex, int pageSize, ref int totalNumber)
|
||||
public Task<KeyValuePair<List<T>, int>> ToPageListAsync(int pageIndex, int pageSize, int totalNumber)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
Task<KeyValuePair<List<T>, int>> result = new Task<KeyValuePair<List<T>, int>>(() =>
|
||||
{
|
||||
int totalNumberAsync = 0;
|
||||
ISugarQueryable<T> asyncQueryable = CopyQueryable();
|
||||
var list = asyncQueryable.ToPageList(pageIndex, pageSize, ref totalNumberAsync);
|
||||
return new KeyValuePair<List<T>, int>(list, totalNumberAsync);
|
||||
});
|
||||
return result;
|
||||
}
|
||||
#endregion
|
||||
|
||||
@@ -871,6 +1001,23 @@ namespace SqlSugar
|
||||
}
|
||||
}
|
||||
}
|
||||
private ISugarQueryable<T> CopyQueryable()
|
||||
{
|
||||
var asyncContext = this.Context.CopyContext(this.Context.CurrentConnectionConfig);
|
||||
var asyncQueryable = asyncContext.Queryable<ExpandoObject>().Select<T>(string.Empty);
|
||||
var asyncQueryableBuilder = asyncQueryable.QueryBuilder;
|
||||
asyncQueryableBuilder.Take = this.QueryBuilder.Take;
|
||||
asyncQueryableBuilder.Skip = this.QueryBuilder.Skip;
|
||||
asyncQueryableBuilder.SelectValue = this.QueryBuilder.SelectValue;
|
||||
asyncQueryableBuilder.WhereInfos = this.QueryBuilder.WhereInfos;
|
||||
asyncQueryableBuilder.EasyJoinInfos = this.QueryBuilder.EasyJoinInfos;
|
||||
asyncQueryableBuilder.JoinQueryInfos = this.QueryBuilder.JoinQueryInfos;
|
||||
asyncQueryableBuilder.WhereIndex = this.QueryBuilder.WhereIndex;
|
||||
asyncQueryableBuilder.EntityType = this.QueryBuilder.EntityType;
|
||||
asyncQueryableBuilder.EntityName = this.QueryBuilder.EntityName;
|
||||
asyncQueryableBuilder.Parameters = this.QueryBuilder.Parameters;
|
||||
return asyncQueryable;
|
||||
}
|
||||
#endregion
|
||||
}
|
||||
#endregion
|
||||
@@ -3600,21 +3747,24 @@ namespace SqlSugar
|
||||
#endregion
|
||||
|
||||
#region In
|
||||
public new ISugarQueryable<T, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> In<FieldType>(Expression<Func<T, object>> expression, params FieldType[] inValues) {
|
||||
public new ISugarQueryable<T, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> In<FieldType>(Expression<Func<T, object>> expression, params FieldType[] inValues)
|
||||
{
|
||||
var isSingle = QueryBuilder.IsSingle();
|
||||
var lamResult = QueryBuilder.GetExpressionValue(expression, isSingle ? ResolveExpressType.FieldSingle : ResolveExpressType.FieldMultiple);
|
||||
var fieldName = lamResult.GetResultString();
|
||||
In(fieldName, inValues);
|
||||
return this;
|
||||
}
|
||||
public new ISugarQueryable<T, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> In<FieldType>(Expression<Func<T, object>> expression, List<FieldType> inValues) {
|
||||
public new ISugarQueryable<T, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> In<FieldType>(Expression<Func<T, object>> expression, List<FieldType> inValues)
|
||||
{
|
||||
var isSingle = QueryBuilder.IsSingle();
|
||||
var lamResult = QueryBuilder.GetExpressionValue(expression, isSingle ? ResolveExpressType.FieldSingle : ResolveExpressType.FieldMultiple);
|
||||
var fieldName = lamResult.GetResultString();
|
||||
In(fieldName, inValues);
|
||||
return this;
|
||||
}
|
||||
public new ISugarQueryable<T, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> In<FieldType>(Expression<Func<T, object>> expression, ISugarQueryable<FieldType> childQueryExpression) {
|
||||
public new ISugarQueryable<T, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> In<FieldType>(Expression<Func<T, object>> expression, ISugarQueryable<FieldType> childQueryExpression)
|
||||
{
|
||||
var sqlObj = childQueryExpression.ToSql();
|
||||
_InQueryable(expression, sqlObj);
|
||||
return this;
|
||||
|
@@ -13,6 +13,7 @@ namespace SqlSugar
|
||||
{
|
||||
SqlSugarClient Context { get; set; }
|
||||
ISqlBuilder SqlBuilder { get; set; }
|
||||
QueryBuilder QueryBuilder { get; set; }
|
||||
|
||||
ISugarQueryable<T> AS<T2>(string tableName);
|
||||
ISugarQueryable<T> AS(string tableName);
|
||||
@@ -99,7 +100,7 @@ namespace SqlSugar
|
||||
string ToJsonPage(int pageIndex, int pageSize);
|
||||
Task<string> ToJsonPageAsync(int pageIndex, int pageSize);
|
||||
string ToJsonPage(int pageIndex, int pageSize, ref int totalNumber);
|
||||
Task<string> ToJsonPageAsync(int pageIndex, int pageSize, ref int totalNumber);
|
||||
Task<KeyValuePair<string,int>> ToJsonPageAsync(int pageIndex, int pageSize, int totalNumber);
|
||||
KeyValuePair<string, List<SugarParameter>> ToSql();
|
||||
|
||||
|
||||
@@ -108,12 +109,12 @@ namespace SqlSugar
|
||||
DataTable ToDataTablePage(int pageIndex, int pageSize);
|
||||
Task<DataTable> ToDataTablePageAsync(int pageIndex, int pageSize);
|
||||
DataTable ToDataTablePage(int pageIndex, int pageSize, ref int totalNumber);
|
||||
Task<DataTable> ToDataTablePageAsync(int pageIndex, int pageSize, ref int totalNumber);
|
||||
Task<KeyValuePair<DataTable,int>> ToDataTablePageAsync(int pageIndex, int pageSize, int totalNumber);
|
||||
|
||||
List<T> ToPageList(int pageIndex, int pageSize);
|
||||
Task<List<T>> ToPageListAsync(int pageIndex, int pageSize);
|
||||
List<T> ToPageList(int pageIndex, int pageSize, ref int totalNumber);
|
||||
Task<List<T>> ToPageListAsync(int pageIndex, int pageSize, ref int totalNumber);
|
||||
Task<KeyValuePair<List<T>,int>> ToPageListAsync(int pageIndex, int pageSize, int totalNumber);
|
||||
void Clear();
|
||||
}
|
||||
public partial interface ISugarQueryable<T, T2> : ISugarQueryable<T>
|
||||
|
Reference in New Issue
Block a user