Update Async

This commit is contained in:
sunkaixuan 2019-05-19 17:48:21 +08:00
parent 4e1c01a9e5
commit a029e15696
5 changed files with 56 additions and 26 deletions

View File

@ -996,6 +996,11 @@ namespace SqlSugar
pageIndex = _PageList(pageIndex, pageSize); pageIndex = _PageList(pageIndex, pageSize);
return ToListAsync(); return ToListAsync();
} }
public async Task<List<T>> ToPageListAsync(int pageIndex, int pageSize, RefAsync<int> totalNumber)
{
totalNumber = await this.Clone().CountAsync();
return await this.Clone().ToPageListAsync(pageIndex, pageSize);
}
public async Task<string> ToJsonAsync() public async Task<string> ToJsonAsync()
{ {
if (IsCache) if (IsCache)
@ -1012,39 +1017,41 @@ namespace SqlSugar
return this.Context.Utilities.SerializeObject(await this.ToListAsync(), typeof(T)); return this.Context.Utilities.SerializeObject(await this.ToListAsync(), typeof(T));
} }
} }
public async Task<string> ToJsonPageAsync(int pageIndex, int pageSize) public async Task<string> ToJsonPageAsync(int pageIndex, int pageSize)
{ {
return this.Context.Utilities.SerializeObject(await this.ToPageListAsync(pageIndex, pageSize), typeof(T)); return this.Context.Utilities.SerializeObject(await this.ToPageListAsync(pageIndex, pageSize), typeof(T));
} }
public async Task<string> ToJsonPageAsync(int pageIndex, int pageSize, RefAsync<int> totalNumber)
public Task<string> ToJsonPageAsync(int pageIndex, int pageSize, ref int totalNumber)
{ {
//False asynchrony with ref totalNumber = await this.Clone().CountAsync();
return Task.FromResult(ToJsonPage(pageIndex, pageSize, ref totalNumber)); return await this.Clone().ToJsonPageAsync(pageIndex, pageSize);
} }
public Task<List<T>> ToPageListAsync(int pageIndex, int pageSize, ref int totalNumber) public async Task<DataTable> ToDataTableAsync()
{ {
//False asynchrony with ref InitMapping();
return Task.FromResult(ToPageList(pageIndex, pageSize, ref totalNumber)); var sqlObj = this.ToSql();
} RestoreMapping();
DataTable result = null;
public Task<DataTable> ToDataTableAsync() if (IsCache)
{ {
//False asynchrony with dataTable var cacheService = this.Context.CurrentConnectionConfig.ConfigureExternalServices.DataInfoCacheService;
return Task.FromResult(ToDataTable()); result = CacheSchemeMain.GetOrCreate<DataTable>(cacheService, this.QueryBuilder, () => { return this.Db.GetDataTable(sqlObj.Key, sqlObj.Value.ToArray()); }, CacheTime, this.Context);
}
else
{
result = await this.Db.GetDataTableAsync(sqlObj.Key, sqlObj.Value.ToArray());
}
return result;
} }
public Task<DataTable> ToDataTablePageAsync(int pageIndex, int pageSize) public Task<DataTable> ToDataTablePageAsync(int pageIndex, int pageSize)
{ {
//False asynchrony with dataTable pageIndex = _PageList(pageIndex, pageSize);
return Task.FromResult(ToDataTablePage(pageIndex, pageSize)); return ToDataTableAsync();
} }
public async Task<DataTable> ToDataTablePageAsync(int pageIndex, int pageSize, RefAsync<int> totalNumber)
public Task<DataTable> ToDataTablePageAsync(int pageIndex, int pageSize, ref int totalNumber)
{ {
//False asynchrony with dataTable totalNumber = await this.Clone().CountAsync();
return Task.FromResult(ToDataTablePage(pageIndex, pageSize, ref totalNumber)); return await this.Clone().ToDataTablePageAsync(pageIndex, pageSize);
} }
#endregion #endregion

View File

@ -0,0 +1,22 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace SqlSugar
{
public class RefAsync<T>
{
public RefAsync() { }
public RefAsync(T value) { Value = value; }
public T Value { get; set; }
public override string ToString()
{
T value = Value;
return value == null ? "" : value.ToString();
}
public static implicit operator T(RefAsync<T> r) { return r.Value; }
public static implicit operator RefAsync<T>(T value) { return new RefAsync<T>(value); }
}
}

View File

@ -129,7 +129,7 @@ namespace SqlSugar
string ToJsonPage(int pageIndex, int pageSize); string ToJsonPage(int pageIndex, int pageSize);
Task<string> ToJsonPageAsync(int pageIndex, int pageSize); Task<string> ToJsonPageAsync(int pageIndex, int pageSize);
string ToJsonPage(int pageIndex, int pageSize, ref int totalNumber); string ToJsonPage(int pageIndex, int pageSize, ref int totalNumber);
Task<string> ToJsonPageAsync(int pageIndex, int pageSize,ref int totalNumber); Task<string> ToJsonPageAsync(int pageIndex, int pageSize, RefAsync<int> totalNumber);
KeyValuePair<string, List<SugarParameter>> ToSql(); KeyValuePair<string, List<SugarParameter>> ToSql();
@ -139,13 +139,13 @@ namespace SqlSugar
Task<DataTable> ToDataTablePageAsync(int pageIndex, int pageSize); Task<DataTable> ToDataTablePageAsync(int pageIndex, int pageSize);
DataTable ToDataTablePage(int pageIndex, int pageSize, ref int totalNumber); DataTable ToDataTablePage(int pageIndex, int pageSize, ref int totalNumber);
DataTable ToDataTablePage(int pageIndex, int pageSize, ref int totalNumber,ref int totalPage); DataTable ToDataTablePage(int pageIndex, int pageSize, ref int totalNumber,ref int totalPage);
Task<DataTable> ToDataTablePageAsync(int pageIndex, int pageSize,ref int totalNumber); Task<DataTable> ToDataTablePageAsync(int pageIndex, int pageSize, RefAsync<int> totalNumber);
List<T> ToPageList(int pageIndex, int pageSize); List<T> ToPageList(int pageIndex, int pageSize);
Task<List<T>> ToPageListAsync(int pageIndex, int pageSize); Task<List<T>> ToPageListAsync(int pageIndex, int pageSize);
List<T> ToPageList(int pageIndex, int pageSize, ref int totalNumber); List<T> ToPageList(int pageIndex, int pageSize, ref int totalNumber);
List<T> ToPageList(int pageIndex, int pageSize, ref int totalNumber,ref int totalPage); List<T> ToPageList(int pageIndex, int pageSize, ref int totalNumber,ref int totalPage);
Task<List<T>> ToPageListAsync(int pageIndex, int pageSize,ref int totalNumber); Task<List<T>> ToPageListAsync(int pageIndex, int pageSize, RefAsync<int> totalNumber);
ISugarQueryable<T> WithCache(int cacheDurationInSeconds = int.MaxValue); ISugarQueryable<T> WithCache(int cacheDurationInSeconds = int.MaxValue);
ISugarQueryable<T> WithCacheIF(bool isCache, int cacheDurationInSeconds = int.MaxValue); ISugarQueryable<T> WithCacheIF(bool isCache, int cacheDurationInSeconds = int.MaxValue);
string ToClassString(string className); string ToClassString(string className);

View File

@ -129,7 +129,7 @@ namespace SqlSugar
sqlParameter.Size = parameter.Size; sqlParameter.Size = parameter.Size;
sqlParameter.Value = parameter.Value; sqlParameter.Value = parameter.Value;
sqlParameter.DbType = parameter.DbType; sqlParameter.DbType = parameter.DbType;
if (sqlParameter.Value!=null&&sqlParameter.DbType == System.Data.DbType.DateTime) if (sqlParameter.Value!=null&& sqlParameter.Value != DBNull.Value && sqlParameter.DbType == System.Data.DbType.DateTime)
{ {
var date = Convert.ToDateTime(sqlParameter.Value); var date = Convert.ToDateTime(sqlParameter.Value);
if (date==DateTime.MinValue) if (date==DateTime.MinValue)

View File

@ -83,6 +83,7 @@
<Compile Include="Abstract\SaveableProvider\SaveableProvider.cs" /> <Compile Include="Abstract\SaveableProvider\SaveableProvider.cs" />
<Compile Include="CacheScheme\CacheKeyBuider.cs" /> <Compile Include="CacheScheme\CacheKeyBuider.cs" />
<Compile Include="CacheScheme\CacheSchemeMain.cs" /> <Compile Include="CacheScheme\CacheSchemeMain.cs" />
<Compile Include="Entities\AsyncRef.cs" />
<Compile Include="Entities\CacheKey.cs" /> <Compile Include="Entities\CacheKey.cs" />
<Compile Include="Entities\SugarTerant.cs" /> <Compile Include="Entities\SugarTerant.cs" />
<Compile Include="Entities\ConditionalModel.cs" /> <Compile Include="Entities\ConditionalModel.cs" />