mirror of
https://gitee.com/dotnetchina/SqlSugar.git
synced 2025-10-15 18:55:07 +08:00
Optimize your code
This commit is contained in:
@@ -593,60 +593,7 @@ namespace SqlSugar
|
||||
}
|
||||
else if (method.Method.Name == "Select")
|
||||
{
|
||||
var exp = method.Arguments[1];
|
||||
var newExp = (exp as LambdaExpression).Body;
|
||||
var types = exp.Type.GetGenericArguments();
|
||||
if (types != null && types.Length > 0)
|
||||
{
|
||||
var type = types[0];
|
||||
var entityInfo = this.Context.EntityMaintenance.GetEntityInfo(type);
|
||||
this.Context.InitMappingInfo(type);
|
||||
Check.ExceptionEasy(newExp.Type != entityInfo.Type, $" new {newExp.Type.Name}is error ,use Select(it=>new {entityInfo.Type.Name})", $"new {newExp.Type.Name}是错误的,请使用Select(it=>new {entityInfo.Type.Name})");
|
||||
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);
|
||||
result.SelectString = (" " + queryable.QueryBuilder.GetExpressionValue(exp, ResolveExpressType.SelectSingle).GetString());
|
||||
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);
|
||||
}
|
||||
}
|
||||
foreach (var nav in entityInfo.Columns.Where(x => x.Navigat != null && x.Navigat.NavigatType == NavigateType.OneToMany&& x.Navigat.Name2!=null))
|
||||
{
|
||||
var navColumn = entityInfo.Columns.FirstOrDefault(it => it.PropertyName == nav.Navigat.Name2);
|
||||
if (navColumn != null)
|
||||
{
|
||||
AppColumns(result, queryable, navColumn.DbColumnName);
|
||||
}
|
||||
}
|
||||
result.SelectString = result.SelectString.TrimStart(',');
|
||||
if (result.SelectString == "")
|
||||
{
|
||||
result.SelectString = null;
|
||||
}
|
||||
}
|
||||
if (properyName != null)
|
||||
{
|
||||
var fkColumnsInfo = entityInfo.Columns.FirstOrDefault(x => x.PropertyName == properyName);
|
||||
if (fkColumnsInfo != null)
|
||||
{
|
||||
var fkName = fkColumnsInfo.DbColumnName;
|
||||
AppColumns(result, queryable, fkName);
|
||||
}
|
||||
}
|
||||
}
|
||||
Select(properyName, result, method, queryable);
|
||||
}
|
||||
else if (method.Method.Name == "OrderByDescending")
|
||||
{
|
||||
@@ -706,6 +653,64 @@ namespace SqlSugar
|
||||
return result;
|
||||
}
|
||||
|
||||
private void Select(string properyName, SqlInfo result, MethodCallExpression method, ISugarQueryable<object> queryable)
|
||||
{
|
||||
var exp = method.Arguments[1];
|
||||
var newExp = (exp as LambdaExpression).Body;
|
||||
var types = exp.Type.GetGenericArguments();
|
||||
if (types != null && types.Length > 0)
|
||||
{
|
||||
var type = types[0];
|
||||
var entityInfo = this.Context.EntityMaintenance.GetEntityInfo(type);
|
||||
this.Context.InitMappingInfo(type);
|
||||
Check.ExceptionEasy(newExp.Type != entityInfo.Type, $" new {newExp.Type.Name}is error ,use Select(it=>new {entityInfo.Type.Name})", $"new {newExp.Type.Name}是错误的,请使用Select(it=>new {entityInfo.Type.Name})");
|
||||
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);
|
||||
result.SelectString = (" " + queryable.QueryBuilder.GetExpressionValue(exp, ResolveExpressType.SelectSingle).GetString());
|
||||
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);
|
||||
}
|
||||
}
|
||||
foreach (var nav in entityInfo.Columns.Where(x => x.Navigat != null && x.Navigat.NavigatType == NavigateType.OneToMany && x.Navigat.Name2 != null))
|
||||
{
|
||||
var navColumn = entityInfo.Columns.FirstOrDefault(it => it.PropertyName == nav.Navigat.Name2);
|
||||
if (navColumn != null)
|
||||
{
|
||||
AppColumns(result, queryable, navColumn.DbColumnName);
|
||||
}
|
||||
}
|
||||
result.SelectString = result.SelectString.TrimStart(',');
|
||||
if (result.SelectString == "")
|
||||
{
|
||||
result.SelectString = null;
|
||||
}
|
||||
}
|
||||
if (properyName != null)
|
||||
{
|
||||
var fkColumnsInfo = entityInfo.Columns.FirstOrDefault(x => x.PropertyName == properyName);
|
||||
if (fkColumnsInfo != null)
|
||||
{
|
||||
var fkName = fkColumnsInfo.DbColumnName;
|
||||
AppColumns(result, queryable, fkName);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static void SetTableShortName(SqlInfo result, ISugarQueryable<object> queryable)
|
||||
{
|
||||
if (queryable.QueryBuilder.TableShortName.HasValue()&& result.TableShortName.IsNullOrEmpty())
|
||||
|
@@ -9,6 +9,10 @@ namespace SqlSugar
|
||||
{
|
||||
public static class CommonExtensions
|
||||
{
|
||||
public static List<T> ToList<T>(this T thisValue,Func<T,T> action) where T:class,new()
|
||||
{
|
||||
return new List<T> { thisValue };
|
||||
}
|
||||
public static IEnumerable<T> WhereIF<T>(this IEnumerable<T> thisValue, bool isOk, Func<T, bool> predicate)
|
||||
{
|
||||
if (isOk)
|
||||
|
Reference in New Issue
Block a user