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);
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()
{
if (IsCache)
@ -1012,41 +1017,43 @@ namespace SqlSugar
return this.Context.Utilities.SerializeObject(await this.ToListAsync(), typeof(T));
}
}
public async Task<string> ToJsonPageAsync(int pageIndex, int pageSize)
{
return this.Context.Utilities.SerializeObject(await this.ToPageListAsync(pageIndex, pageSize), typeof(T));
}
public Task<string> ToJsonPageAsync(int pageIndex, int pageSize, ref int totalNumber)
public async Task<string> ToJsonPageAsync(int pageIndex, int pageSize, RefAsync<int> totalNumber)
{
//False asynchrony with ref
return Task.FromResult(ToJsonPage(pageIndex, pageSize, ref totalNumber));
totalNumber = await this.Clone().CountAsync();
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
return Task.FromResult(ToPageList(pageIndex, pageSize, ref totalNumber));
InitMapping();
var sqlObj = this.ToSql();
RestoreMapping();
DataTable result = null;
if (IsCache)
{
var cacheService = this.Context.CurrentConnectionConfig.ConfigureExternalServices.DataInfoCacheService;
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> ToDataTableAsync()
{
//False asynchrony with dataTable
return Task.FromResult(ToDataTable());
}
public Task<DataTable> ToDataTablePageAsync(int pageIndex, int pageSize)
{
//False asynchrony with dataTable
return Task.FromResult(ToDataTablePage(pageIndex, pageSize));
pageIndex = _PageList(pageIndex, pageSize);
return ToDataTableAsync();
}
public Task<DataTable> ToDataTablePageAsync(int pageIndex, int pageSize, ref int totalNumber)
public async Task<DataTable> ToDataTablePageAsync(int pageIndex, int pageSize, RefAsync<int> totalNumber)
{
//False asynchrony with dataTable
return Task.FromResult(ToDataTablePage(pageIndex, pageSize, ref totalNumber));
totalNumber = await this.Clone().CountAsync();
return await this.Clone().ToDataTablePageAsync(pageIndex, pageSize);
}
#endregion
#region Private Methods

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);
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<string> ToJsonPageAsync(int pageIndex, int pageSize, RefAsync<int> totalNumber);
KeyValuePair<string, List<SugarParameter>> ToSql();
@ -139,13 +139,13 @@ namespace SqlSugar
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,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);
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,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> WithCacheIF(bool isCache, int cacheDurationInSeconds = int.MaxValue);
string ToClassString(string className);

View File

@ -129,7 +129,7 @@ namespace SqlSugar
sqlParameter.Size = parameter.Size;
sqlParameter.Value = parameter.Value;
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);
if (date==DateTime.MinValue)

View File

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