mirror of
https://gitee.com/dotnetchina/SqlSugar.git
synced 2025-05-03 12:18:00 +08:00
Update Core
This commit is contained in:
parent
37d6b4defd
commit
659ddc9e54
@ -3,6 +3,8 @@ using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Reflection;
|
||||
using System.Text;
|
||||
using System.Text.RegularExpressions;
|
||||
|
||||
namespace SqlSugar
|
||||
{
|
||||
public partial class CodeFirstProvider : ICodeFirst
|
||||
@ -114,6 +116,16 @@ namespace SqlSugar
|
||||
{
|
||||
item.Length = DefultLength;
|
||||
}
|
||||
if (item.DataType!=null&&item.DataType.Contains(",")&& !Regex.IsMatch(item.DataType,@"\d\,\d"))
|
||||
{
|
||||
var types = item.DataType.Split(',').Select(it => it.ToLower()).ToList();
|
||||
var mapingTypes=this.Context.Ado.DbBind.MappingTypes.Select(it=>it.Key.ToLower()).ToList();
|
||||
var mappingType=types.FirstOrDefault(it => mapingTypes.Contains(it));
|
||||
if (mappingType != null)
|
||||
{
|
||||
item.DataType = mappingType;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
var tableName = GetTableName(entityInfo);
|
||||
|
@ -62,6 +62,7 @@ namespace SqlSugar
|
||||
}
|
||||
public IDeleteable<T> AS(string tableName)
|
||||
{
|
||||
if (tableName == null) return this;
|
||||
var entityName = typeof(T).Name;
|
||||
IsAs = true;
|
||||
OldMappingTableList = this.Context.MappingTables;
|
||||
|
@ -35,8 +35,11 @@ namespace SqlSugar
|
||||
#region Core
|
||||
public void AddQueue()
|
||||
{
|
||||
var sqlObj = this.ToSql();
|
||||
this.Context.Queues.Add(sqlObj.Key, sqlObj.Value);
|
||||
if (this.InsertObjs!=null&&this.InsertObjs.Length > 0&& this.InsertObjs[0]!=null)
|
||||
{
|
||||
var sqlObj = this.ToSql();
|
||||
this.Context.Queues.Add(sqlObj.Key, sqlObj.Value);
|
||||
}
|
||||
}
|
||||
public virtual int ExecuteCommand()
|
||||
{
|
||||
@ -165,6 +168,7 @@ namespace SqlSugar
|
||||
#region Setting
|
||||
public IInsertable<T> AS(string tableName)
|
||||
{
|
||||
if (tableName == null) return this;
|
||||
var entityName = typeof(T).Name;
|
||||
IsAs = true;
|
||||
OldMappingTableList = this.Context.MappingTables;
|
||||
|
@ -85,6 +85,7 @@ namespace SqlSugar
|
||||
}
|
||||
public ISugarQueryable<T> AS(string tableName)
|
||||
{
|
||||
if (tableName == null) return this;
|
||||
var entityName = typeof(T).Name;
|
||||
return _As(tableName, entityName);
|
||||
}
|
||||
@ -1067,21 +1068,10 @@ namespace SqlSugar
|
||||
}
|
||||
public virtual List<T> ToPageList(int pageIndex, int pageSize, ref int totalNumber)
|
||||
{
|
||||
_RestoreMapping = false;
|
||||
List<T> result = null;
|
||||
int count = this.Count();
|
||||
_RestoreMapping = true;
|
||||
QueryBuilder.IsDisabledGobalFilter = UtilMethods.GetOldValue(QueryBuilder.IsDisabledGobalFilter, () =>
|
||||
{
|
||||
QueryBuilder.IsDisabledGobalFilter = true;
|
||||
if (count == 0)
|
||||
result = new List<T>();
|
||||
else
|
||||
result = ToPageList(pageIndex, pageSize);
|
||||
|
||||
});
|
||||
totalNumber = count;
|
||||
return result;
|
||||
var oldMapping = this.Context.MappingTables;
|
||||
totalNumber = this.Clone().Count();
|
||||
this.Context.MappingTables = oldMapping;
|
||||
return this.Clone().ToPageList(pageIndex, pageSize);
|
||||
}
|
||||
public virtual List<T> ToPageList(int pageIndex, int pageSize, ref int totalNumber, ref int totalPage)
|
||||
{
|
||||
|
@ -16,6 +16,7 @@ namespace SqlSugar
|
||||
List<T> dbDataList = new List<T>();
|
||||
List<KeyValuePair<StorageType, Func<StorageableInfo<T>, bool>, string>> whereFuncs = new List<KeyValuePair<StorageType, Func<StorageableInfo<T>, bool>, string>>();
|
||||
Expression<Func<T, object>> whereExpression;
|
||||
private string asname { get; set; }
|
||||
public Storageable(List<T> datas, SqlSugarProvider context)
|
||||
{
|
||||
this.Context = context;
|
||||
@ -71,9 +72,9 @@ namespace SqlSugar
|
||||
{
|
||||
if (this.allDatas.Count == 0)
|
||||
return new StorageableResult<T>() {
|
||||
AsDeleteable = this.Context.Deleteable<T>().Where(it => false),
|
||||
AsInsertable = this.Context.Insertable(new List<T>()),
|
||||
AsUpdateable = this.Context.Updateable(new List<T>()),
|
||||
AsDeleteable = this.Context.Deleteable<T>().AS(asname).Where(it => false),
|
||||
AsInsertable = this.Context.Insertable(new List<T>()).AS(asname),
|
||||
AsUpdateable = this.Context.Updateable(new List<T>()).AS(asname),
|
||||
InsertList = new List<StorageableMessage<T>>(),
|
||||
UpdateList = new List<StorageableMessage<T>>(),
|
||||
DeleteList = new List<StorageableMessage<T>>(),
|
||||
@ -90,7 +91,7 @@ namespace SqlSugar
|
||||
if (whereExpression == null && pkInfos.Any())
|
||||
{
|
||||
this.Context.Utilities.PageEach(allDatas, 300, item => {
|
||||
var addItems=this.Context.Queryable<T>().WhereClassByPrimaryKey(item.Select(it => it.Item).ToList()).ToList();
|
||||
var addItems=this.Context.Queryable<T>().AS(asname).WhereClassByPrimaryKey(item.Select(it => it.Item).ToList()).ToList();
|
||||
dbDataList.AddRange(addItems);
|
||||
});
|
||||
}
|
||||
@ -120,9 +121,9 @@ namespace SqlSugar
|
||||
var other = messageList.Where(it => it.StorageType == StorageType.Other).ToList();
|
||||
StorageableResult<T> result = new StorageableResult<T>()
|
||||
{
|
||||
AsDeleteable = this.Context.Deleteable<T>(),
|
||||
AsUpdateable = this.Context.Updateable(update.Select(it => it.Item).ToList()),
|
||||
AsInsertable = this.Context.Insertable(inset.Select(it => it.Item).ToList()),
|
||||
AsDeleteable = this.Context.Deleteable<T>().AS(asname),
|
||||
AsUpdateable = this.Context.Updateable(update.Select(it => it.Item).ToList()).AS(asname),
|
||||
AsInsertable = this.Context.Insertable(inset.Select(it => it.Item).ToList()).AS(asname),
|
||||
OtherList = other,
|
||||
InsertList = inset,
|
||||
DeleteList = delete,
|
||||
@ -175,7 +176,7 @@ namespace SqlSugar
|
||||
{
|
||||
List<IConditionalModel> conditList = new List<IConditionalModel>();
|
||||
SetConditList(itemList, whereColumns, conditList);
|
||||
var addItem = this.Context.Queryable<T>().Where(conditList).ToList();
|
||||
var addItem = this.Context.Queryable<T>().AS(asname).Where(conditList).ToList();
|
||||
this.dbDataList.AddRange(addItem);
|
||||
});
|
||||
}
|
||||
@ -238,5 +239,11 @@ namespace SqlSugar
|
||||
var result = resolveExpress.Result;
|
||||
return result;
|
||||
}
|
||||
|
||||
public IStorageable<T> As(string tableName)
|
||||
{
|
||||
this.asname = tableName;
|
||||
return this;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -261,7 +261,7 @@ namespace SqlSugar
|
||||
var isSingleTableHasSubquery = IsSingle() && resolveExpress.SingleTableNameSubqueryShortName.HasValue();
|
||||
if (isSingleTableHasSubquery)
|
||||
{
|
||||
Check.Exception(!string.IsNullOrEmpty(this.TableShortName) && resolveExpress.SingleTableNameSubqueryShortName != this.TableShortName, "{0} and {1} need same name");
|
||||
Check.Exception(!string.IsNullOrEmpty(this.TableShortName) && resolveExpress.SingleTableNameSubqueryShortName != this.TableShortName, "{0} and {1} need same name", resolveExpress.SingleTableNameSubqueryShortName, this.TableShortName);
|
||||
this.TableShortName = resolveExpress.SingleTableNameSubqueryShortName;
|
||||
}
|
||||
return result;
|
||||
|
@ -114,6 +114,7 @@ namespace SqlSugar
|
||||
}
|
||||
public IUpdateable<T> AS(string tableName)
|
||||
{
|
||||
if (tableName == null) return this;
|
||||
var entityName = typeof(T).Name;
|
||||
IsAs = true;
|
||||
OldMappingTableList = this.Context.MappingTables;
|
||||
|
@ -31,6 +31,7 @@ namespace SqlSugar
|
||||
public InitKeyType InitKeyType = InitKeyType.Attribute;
|
||||
/// <summary>
|
||||
///If true, there is only one connection instance in the same thread within the same connection string
|
||||
[Obsolete("use SqlSugar.Ioc")]
|
||||
/// </summary>
|
||||
public bool IsShardSameThread { get; set; }
|
||||
/// <summary>
|
||||
|
@ -90,11 +90,27 @@ namespace SqlSugar
|
||||
break;
|
||||
case ResolveExpressType.FieldSingle:
|
||||
fieldName = GetSingleName(parameter, expression, isLeft);
|
||||
base.Context.Result.Append(fieldName);
|
||||
var fieldIsCommonTemp = IsFieldIsCommonTemp(isSetTempData,parameter);
|
||||
if (fieldIsCommonTemp)
|
||||
{
|
||||
baseParameter.CommonTempData = fieldName;
|
||||
}
|
||||
else
|
||||
{
|
||||
base.Context.Result.Append(fieldName);
|
||||
}
|
||||
break;
|
||||
case ResolveExpressType.FieldMultiple:
|
||||
fieldName = GetMultipleName(parameter, expression, isLeft);
|
||||
base.Context.Result.Append(fieldName);
|
||||
var fieldIsCommonTemp2= IsFieldIsCommonTemp(isSetTempData, parameter);
|
||||
if(fieldIsCommonTemp2)
|
||||
{
|
||||
baseParameter.CommonTempData = fieldName;
|
||||
}
|
||||
else
|
||||
{
|
||||
base.Context.Result.Append(fieldName);
|
||||
}
|
||||
break;
|
||||
case ResolveExpressType.ArrayMultiple:
|
||||
case ResolveExpressType.ArraySingle:
|
||||
@ -106,6 +122,15 @@ namespace SqlSugar
|
||||
}
|
||||
}
|
||||
|
||||
private bool IsFieldIsCommonTemp(bool isSetTempData, ExpressionParameter parameter)
|
||||
{
|
||||
if (parameter.BaseParameter == null)
|
||||
return false;
|
||||
var childExpression= parameter.BaseParameter.ChildExpression.ObjToString();
|
||||
var expression=parameter.BaseParameter.CurrentExpression.ObjToString();
|
||||
return isSetTempData&&((childExpression+".Date")==expression);
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Resolve Where
|
||||
@ -117,12 +142,12 @@ namespace SqlSugar
|
||||
if (ExpressionTool.IsConstExpression(expression))
|
||||
{
|
||||
var value = ExpressionTool.GetMemberValue(expression.Member, expression);
|
||||
baseParameter.CommonTempData = value+"=1 ";
|
||||
baseParameter.CommonTempData = value + "=1 ";
|
||||
}
|
||||
else
|
||||
{
|
||||
fieldName = GetName(parameter, expression, null, isSingle);
|
||||
baseParameter.CommonTempData = fieldName+"=1 ";
|
||||
baseParameter.CommonTempData = fieldName + "=1 ";
|
||||
}
|
||||
}
|
||||
else
|
||||
@ -130,12 +155,12 @@ namespace SqlSugar
|
||||
if (ExpressionTool.IsConstExpression(expression))
|
||||
{
|
||||
var value = ExpressionTool.GetMemberValue(expression.Member, expression);
|
||||
base.AppendValue(parameter, isLeft, value+"=1 ");
|
||||
base.AppendValue(parameter, isLeft, value + "=1 ");
|
||||
}
|
||||
else
|
||||
{
|
||||
fieldName = GetName(parameter, expression, isLeft, isSingle);
|
||||
AppendMember(parameter, isLeft, fieldName+"=1 ");
|
||||
AppendMember(parameter, isLeft, fieldName + "=1 ");
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -209,9 +234,9 @@ namespace SqlSugar
|
||||
base.AppendValue(parameter, isLeft, value);
|
||||
}
|
||||
}
|
||||
catch
|
||||
catch
|
||||
{
|
||||
Check.Exception(true, "Not Support {0}",expression.ToString());
|
||||
Check.Exception(true, "Not Support {0}", expression.ToString());
|
||||
}
|
||||
}
|
||||
|
||||
@ -219,7 +244,7 @@ namespace SqlSugar
|
||||
{
|
||||
expression = expression.Expression as MemberExpression;
|
||||
baseParameter.ChildExpression = expression;
|
||||
if (UtilMethods.GetUnderType(expression.Type) == UtilConstants.BoolType&¶meter.BaseExpression!=null&&ExpressionTool.IsLogicOperator(parameter.BaseExpression))
|
||||
if (UtilMethods.GetUnderType(expression.Type) == UtilConstants.BoolType && parameter.BaseExpression != null && ExpressionTool.IsLogicOperator(parameter.BaseExpression))
|
||||
{
|
||||
ResolveBoolLogic(parameter, baseParameter, expression, isLeft, isSetTempData, isSingle);
|
||||
}
|
||||
@ -332,7 +357,7 @@ namespace SqlSugar
|
||||
var methodParamter = new MethodCallExpressionArgs() { IsMember = true, MemberName = parameter.CommonTempData, MemberValue = null };
|
||||
if (expression.Expression?.Type != null)
|
||||
{
|
||||
methodParamter.Type =UtilMethods.GetUnderType(expression.Expression?.Type);
|
||||
methodParamter.Type = UtilMethods.GetUnderType(expression.Expression?.Type);
|
||||
}
|
||||
var result = this.Context.DbMehtods.HasValue(new MethodCallExpressionModel()
|
||||
{
|
||||
@ -346,7 +371,7 @@ namespace SqlSugar
|
||||
{
|
||||
base.Context.Result.Replace(ExpressionConst.FormatSymbol, "");
|
||||
}
|
||||
this.Context.Result.Append(result+" "+ExpressionTool.GetOperator(parameter.BaseExpression.NodeType)+" ");
|
||||
this.Context.Result.Append(result + " " + ExpressionTool.GetOperator(parameter.BaseExpression.NodeType) + " ");
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -449,7 +474,7 @@ namespace SqlSugar
|
||||
};
|
||||
return this.Context.DbMehtods.DateValue(pars);
|
||||
}
|
||||
|
||||
|
||||
private string GetToDateShort(string value)
|
||||
{
|
||||
var pars = new MethodCallExpressionModel()
|
||||
|
@ -17,6 +17,7 @@ namespace SqlSugar
|
||||
IStorageable<T> SplitDelete(Func<StorageableInfo<T>, bool> conditions, string message = null);
|
||||
IStorageable<T> SplitOther(Func<StorageableInfo<T>, bool> conditions, string message = null);
|
||||
StorageableResult<T> ToStorage();
|
||||
IStorageable<T> As(string tableName);
|
||||
}
|
||||
|
||||
public class StorageableInfo<T> where T : class, new()
|
||||
|
@ -148,7 +148,7 @@ namespace SqlSugar
|
||||
break;
|
||||
case DateType.Day:
|
||||
parameter2 = "%d";
|
||||
break;
|
||||
return string.Format(" CAST(STRFTIME('{1}', DATETIME(DATETIME(strftime('%Y-%m-%d', {0})), 'LOCALTIME')) AS INTEGER)", parameter.MemberName, parameter2);
|
||||
case DateType.Hour:
|
||||
parameter2 = "%H";
|
||||
break;
|
||||
|
@ -2,7 +2,7 @@
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>netstandard2.0</TargetFramework>
|
||||
<Version>5.0.2.9</Version>
|
||||
<Version>5.0.3</Version>
|
||||
<Copyright>sun_kai_xuan</Copyright>
|
||||
<PackageProjectUrl>https://github.com/sunkaixuan/SqlSugar</PackageProjectUrl>
|
||||
<PackageLicenseUrl></PackageLicenseUrl>
|
||||
|
@ -593,9 +593,10 @@ namespace SqlSugar
|
||||
}
|
||||
public void ChangeDatabase(dynamic configId)
|
||||
{
|
||||
configId =Convert.ToString(configId);
|
||||
var isLog = _Context.Ado.IsEnableLogEvent;
|
||||
Check.Exception(!_AllClients.Any(it => it.ConnectionConfig.ConfigId == configId), "ConfigId was not found {0}", configId);
|
||||
InitTenant(_AllClients.First(it => it.ConnectionConfig.ConfigId == configId));
|
||||
Check.Exception(!_AllClients.Any(it =>Convert.ToString( it.ConnectionConfig.ConfigId) == configId), "ConfigId was not found {0}", configId);
|
||||
InitTenant(_AllClients.First(it => Convert.ToString(it.ConnectionConfig.ConfigId )== configId));
|
||||
if (this._IsAllTran)
|
||||
this.Ado.BeginTran();
|
||||
if (this._IsOpen)
|
||||
|
Loading…
Reference in New Issue
Block a user