Update SqlServer

This commit is contained in:
sunkaixuan 2024-03-15 16:51:22 +08:00
parent fea4fe0812
commit f66aa80bc9
4 changed files with 32 additions and 1 deletions

View File

@ -82,7 +82,7 @@ namespace SqlSugar
try
{
if (dataReader == null) return result;
while (await((DbDataReader)dataReader).ReadAsync())
while (await GetReadAsync(dataReader,context))
{
//try
//{
@ -116,6 +116,18 @@ namespace SqlSugar
return result;
}
private Task<bool> GetReadAsync(IDataReader dataReader, SqlSugarProvider context)
{
if (this.QueryBuilder?.Builder?.SupportReadToken==true&&context.Ado.CancellationToken!=null)
{
return this.QueryBuilder.Builder.GetReaderByToken(dataReader, context.Ado.CancellationToken.Value);
}
else
{
return ((DbDataReader)dataReader).ReadAsync();
}
}
private void SetOwnsOne(object addItem, bool isOwnsOne, EntityInfo entityInfo, IDataReader dataReader)
{
if (isOwnsOne)

View File

@ -1,9 +1,11 @@
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.Common;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading;
using System.Threading.Tasks;
namespace SqlSugar
{
@ -28,6 +30,13 @@ namespace SqlSugar
#endregion
#region abstract Methods
public virtual bool SupportReadToken { get; set; }
public virtual Task<bool> GetReaderByToken(IDataReader dataReader, CancellationToken cancellationToken)
{
return ((DbDataReader)dataReader).ReadAsync();
}
public virtual void ChangeJsonType(SugarParameter paramter)
{

View File

@ -5,6 +5,7 @@ using System.Dynamic;
using System.Linq;
using System.Linq.Expressions;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
namespace SqlSugar
{
@ -47,5 +48,9 @@ namespace SqlSugar
string RemoveParentheses(string sql);
string RemoveN(string sql);
void FormatSaveQueueSql(StringBuilder sqlBuilder);
bool SupportReadToken { get; set; }
Task<bool> GetReaderByToken(IDataReader dataReader, CancellationToken cancellationToken);
}
}

View File

@ -11,6 +11,7 @@ namespace SqlSugar
{
public override string SqlTranslationLeft { get { return "["; } }
public override string SqlTranslationRight { get { return "]"; } }
public override bool SupportReadToken { get; set; } = true;
public override string RemoveParentheses(string sql)
{
@ -31,5 +32,9 @@ namespace SqlSugar
paramter.DbType = System.Data.DbType.String;
}
}
public override Task<bool> GetReaderByToken(System.Data.IDataReader dataReader, System.Threading.CancellationToken cancellationToken)
{
return((Microsoft.Data.SqlClient.SqlDataReader)dataReader).ReadAsync(this.Context.Ado.CancellationToken.Value);
}
}
}