Update Core

This commit is contained in:
sunkaixuan 2022-04-18 23:19:36 +08:00
parent 525cc3b4df
commit 0692df740a
8 changed files with 84 additions and 7 deletions

View File

@ -220,6 +220,27 @@ namespace SqlSugar
this.Context.InitMappingInfo<T>();
return this.TruncateTable(this.Context.EntityMaintenance.GetEntityInfo<T>().DbTableName);
}
public virtual bool TruncateTable<T,T2>()
{
TruncateTable<T>();
TruncateTable<T2>();
return true;
}
public virtual bool TruncateTable<T, T2,T3>()
{
TruncateTable<T>();
TruncateTable<T2>();
TruncateTable<T3>();
return true;
}
public virtual bool TruncateTable<T, T2, T3,T4>()
{
TruncateTable<T>();
TruncateTable<T2>();
TruncateTable<T3>();
TruncateTable<T4>();
return true;
}
public virtual bool DropColumn(string tableName, string columnName)
{
columnName = this.SqlBuilder.GetTranslationColumnName(columnName);

View File

@ -218,7 +218,7 @@ namespace SqlSugar
CSharpTypeName = bColumn.PropertyInfo.PropertyType.Name
}));
var sql = GetWhereSql();
var bList = selector(this.Context.Queryable<object>().AS(bEntityInfo.DbTableName).AddParameters(sql.Parameters).Where(conditionalModels2).WhereIF(sql.WhereString.HasValue(),sql.WhereString).OrderByIF(sql.OrderByString.HasValue(),sql.OrderByString));
var bList = selector(this.Context.Queryable<object>().AS(bEntityInfo.DbTableName).AddParameters(sql.Parameters).Where(conditionalModels2).WhereIF(sql.WhereString.HasValue(),sql.WhereString).Select(sql.SelectString).OrderByIF(sql.OrderByString.HasValue(),sql.OrderByString));
if (bList.HasValue())
{
foreach (var listItem in list)
@ -288,7 +288,7 @@ namespace SqlSugar
CSharpTypeName = listItemPkColumn.PropertyInfo.PropertyType.Name
}));
var sqlObj = GetWhereSql();
var navList = selector(this.Context.Queryable<object>().AS(navEntityInfo.DbTableName).AddParameters(sqlObj.Parameters).Where(conditionalModels).WhereIF(sqlObj.WhereString.HasValue(),sqlObj.WhereString).OrderByIF(sqlObj.OrderByString.HasValue(),sqlObj.OrderByString));
var navList = selector(this.Context.Queryable<object>().AS(navEntityInfo.DbTableName).AddParameters(sqlObj.Parameters).Where(conditionalModels).WhereIF(sqlObj.WhereString.HasValue(),sqlObj.WhereString).Select(sqlObj.SelectString).OrderByIF(sqlObj.OrderByString.HasValue(),sqlObj.OrderByString));
if (navList.HasValue())
{
foreach (var item in list)
@ -341,6 +341,37 @@ namespace SqlSugar
var exp = method.Arguments[1];
oredrBy.Add(" " + queryable.QueryBuilder.GetExpressionValue(exp, ResolveExpressType.WhereSingle).GetString());
}
else if (method.Method.Name == "Select")
{
var exp = method.Arguments[1];
var types = exp.Type.GetGenericArguments();
if (types != null && types.Length > 0)
{
var type = types[0];
var entityInfo = this.Context.EntityMaintenance.GetEntityInfo(type);
if (entityInfo.Columns.Count(x => x.Navigat != null) == 0)
{
result.SelectString = (" " + queryable.QueryBuilder.GetExpressionValue(exp, ResolveExpressType.SelectSingle).GetString());
}
else
{
var pkInfo = entityInfo.Columns.FirstOrDefault(x => x.IsPrimarykey);
if (pkInfo != null)
{
var pkName = pkInfo.DbColumnName;
AppColumns(result, queryable, pkName);
}
foreach (var nav in entityInfo.Columns.Where(x => x.Navigat != null&&x.Navigat.NavigatType==NavigateType.OneToOne))
{
var navColumn = entityInfo.Columns.FirstOrDefault(it => it.PropertyName == nav.Navigat.Name);
if (navColumn != null)
{
AppColumns(result, queryable, navColumn.DbColumnName);
}
}
}
}
}
else if (method.Method.Name == "OrderByDescending")
{
var exp = method.Arguments[1];
@ -370,10 +401,20 @@ namespace SqlSugar
return result;
}
private static void AppColumns(SqlInfo result, ISugarQueryable<object> queryable, string columnName)
{
var selectPkName = queryable.SqlBuilder.GetTranslationColumnName(columnName);
if (result.SelectString.HasValue() && !result.SelectString.ToLower().Contains(selectPkName.ToLower()))
{
result.SelectString = result.SelectString + "," + selectPkName;
}
}
public class SqlInfo
{
public string WhereString { get; set; }
public string OrderByString { get; set; }
public string SelectString { get; set; }
public List<SugarParameter> Parameters { get; set; }
}

View File

@ -868,7 +868,14 @@ namespace SqlSugar
}
else if (this.QueryBuilder.EntityType == UtilConstants.ObjType || (this.QueryBuilder.AsTables != null && this.QueryBuilder.AsTables.Count == 1)||this.QueryBuilder.EntityName!=this.QueryBuilder.EntityType.Name)
{
return this.Select<TResult>(this.SqlBuilder.SqlSelectAll);
if (this.QueryBuilder.SelectValue.HasValue()&& this.QueryBuilder.SelectValue.ObjToString().Contains("AS"))
{
return this.Select<TResult>(this.QueryBuilder.SelectValue+"");
}
else
{
return this.Select<TResult>(this.SqlBuilder.SqlSelectAll);
}
}
else
{

View File

@ -265,7 +265,7 @@ namespace SqlSugar
if (isSingleTableHasSubquery)
{
Check.Exception(!string.IsNullOrEmpty(this.TableShortName) && resolveExpress.SingleTableNameSubqueryShortName != this.TableShortName, "{0} and {1} need same name", resolveExpress.SingleTableNameSubqueryShortName, this.TableShortName);
this.TableShortName = resolveExpress.SingleTableNameSubqueryShortName;
this.TableShortName =resolveExpress.SingleTableNameSubqueryShortName;
}
return result;
}

View File

@ -84,7 +84,8 @@ namespace SqlSugar
PgSqlIsAutoToLower = it.MoreSettings.PgSqlIsAutoToLower,
IsAutoRemoveDataCache = it.MoreSettings.IsAutoRemoveDataCache,
IsWithNoLockQuery = it.MoreSettings.IsWithNoLockQuery,
TableEnumIsString=it.MoreSettings.TableEnumIsString
TableEnumIsString=it.MoreSettings.TableEnumIsString,
DisableMillisecond=it.MoreSettings.DisableMillisecond
},
SqlMiddle=it.SqlMiddle==null?null:new SqlMiddle {
IsSqlMiddle=it.SqlMiddle.IsSqlMiddle,

View File

@ -589,6 +589,10 @@ namespace SqlSugar
IsMember = parameter.ChildExpression is MemberExpression && !ExpressionTool.IsConstExpression(parameter.ChildExpression as MemberExpression),
MemberName = parameter.CommonTempData
};
if(methodCallExpressionArgs.MemberName is MapperSql)
{
methodCallExpressionArgs.MemberName = (methodCallExpressionArgs.MemberName as MapperSql).Sql;
}
if (methodCallExpressionArgs.IsMember && parameter.ChildExpression != null && parameter.ChildExpression.ToString() == "DateTime.Now")
{
methodCallExpressionArgs.IsMember = false;

View File

@ -67,7 +67,7 @@ namespace SqlSugar
var parameters = (exp.Arguments[0] as LambdaExpression).Parameters;
if (parameters != null && parameters.Count > 0)
{
this.Context.CurrentShortName = this.Context.SqlTranslationLeft + parameters[0] + this.Context.SqlTranslationRight;
this.Context.CurrentShortName = this.Context.GetTranslationColumnName(parameters[0].ObjToString());
}
}
@ -79,7 +79,7 @@ namespace SqlSugar
var parameters = (exp.Arguments[1] as LambdaExpression).Parameters;
if (parameters != null && parameters.Count > 0)
{
this.Context.CurrentShortName = this.Context.SqlTranslationLeft + parameters[0] + this.Context.SqlTranslationRight;
this.Context.CurrentShortName = this.Context.GetTranslationColumnName(parameters[0].ObjToString());
}
}

View File

@ -33,6 +33,9 @@ namespace SqlSugar
bool DropTable(string tableName);
bool TruncateTable(string tableName);
bool TruncateTable<T>();
bool TruncateTable<T,T2>();
bool TruncateTable<T, T2, T3>();
bool TruncateTable<T, T2, T3,T4>();
bool CreateTable(string tableName, List<DbColumnInfo> columns,bool isCreatePrimaryKey=true);
bool AddColumn(string tableName, DbColumnInfo column);
bool UpdateColumn(string tableName, DbColumnInfo column);