Synchronous code

This commit is contained in:
sunkaixuan 2025-05-06 16:24:56 +08:00
parent 822749f17b
commit ee1799769a
5 changed files with 37 additions and 1 deletions

View File

@ -31,6 +31,7 @@ namespace SqlSugar
#endregion #endregion
#region Properties #region Properties
public virtual bool IsNoSql { get; set; }
internal bool IsOpenAsync { get; set; } internal bool IsOpenAsync { get; set; }
protected List<IDataParameter> OutputParameters { get; set; } protected List<IDataParameter> OutputParameters { get; set; }
public virtual string SqlParameterKeyWord { get { return "@"; } } public virtual string SqlParameterKeyWord { get { return "@"; } }

View File

@ -281,7 +281,14 @@ namespace SqlSugar
sbTypes.Append(type.Name.Substring(0, 2)); sbTypes.Append(type.Name.Substring(0, 2));
} }
} }
types = sbTypes.ToString(); types = sbTypes.ToString();
if (this.QueryBuilder?.Context?.Ado is AdoProvider adoProvider)
{
if (adoProvider.IsNoSql)
{
types = "NoSql";
}
}
return keys; return keys;
} }

View File

@ -300,6 +300,21 @@ namespace SqlSugar
validPropertyName = validPropertyName == "byte[]" ? "byteArray" : validPropertyName; validPropertyName = validPropertyName == "byte[]" ? "byteArray" : validPropertyName;
CSharpDataType validPropertyType = (CSharpDataType)Enum.Parse(typeof(CSharpDataType), validPropertyName); CSharpDataType validPropertyType = (CSharpDataType)Enum.Parse(typeof(CSharpDataType), validPropertyName);
#region NoSql
if (this.Context.Ado is AdoProvider provider)
{
if (provider.IsNoSql)
{
method = isNullableType ? getOtherNull.MakeGenericMethod(bindPropertyType) : getOther.MakeGenericMethod(bindPropertyType);
if (method.IsVirtual)
generator.Emit(OpCodes.Callvirt, method);
else
generator.Emit(OpCodes.Call, method);
return;
}
}
#endregion
#region Sqlite Logic #region Sqlite Logic
if (this.Context.CurrentConnectionConfig.DbType == DbType.Sqlite) if (this.Context.CurrentConnectionConfig.DbType == DbType.Sqlite)
{ {

View File

@ -4,6 +4,7 @@ using System.Data;
using System.Linq; using System.Linq;
using System.Reflection; using System.Reflection;
using System.Text; using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks; using System.Threading.Tasks;
@ -30,6 +31,10 @@ namespace SqlSugar
public QueryMethodInfo AS(string tableName) public QueryMethodInfo AS(string tableName)
{ {
string shortName = $"{tableName}_1"; string shortName = $"{tableName}_1";
if (!Regex.IsMatch(shortName, @"^\w+$"))
{
shortName = "maintable";
}
var method = QueryableObj.GetType().GetMyMethod("AS", 2, typeof(string), typeof(string)); var method = QueryableObj.GetType().GetMyMethod("AS", 2, typeof(string), typeof(string));
this.QueryableObj = method.Invoke(QueryableObj, new object[] { tableName, shortName }); this.QueryableObj = method.Invoke(QueryableObj, new object[] { tableName, shortName });
return this; return this;

View File

@ -156,6 +156,14 @@ namespace SqlSugar
string parameterName = this.Context.SqlParameterKeyWord + ExpressionConst.Const + this.Context.ParameterIndex; string parameterName = this.Context.SqlParameterKeyWord + ExpressionConst.Const + this.Context.ParameterIndex;
parameter.Context.Result.Append(base.Context.GetEqString(memberName, parameterName)); parameter.Context.Result.Append(base.Context.GetEqString(memberName, parameterName));
var addItem = new SugarParameter(parameterName, parameter.CommonTempData); var addItem = new SugarParameter(parameterName, parameter.CommonTempData);
if (addItem.Value == null&&item.Type?.Name== "Nullable`1")
{
var genericType = item.Type?.GenericTypeArguments?.FirstOrDefault();
if (genericType != null)
{
addItem.DbType = new SugarParameter(parameterName, UtilMethods.GetDefaultValue(genericType)).DbType;
}
}
ConvertParameterTypeByType(item, addItem); ConvertParameterTypeByType(item, addItem);
this.Context.Parameters.Add(addItem); this.Context.Parameters.Add(addItem);