mirror of
https://gitee.com/dotnetchina/SqlSugar.git
synced 2026-02-27 16:50:33 +08:00
Update .net core
This commit is contained in:
@@ -341,7 +341,8 @@ namespace SqlSugar
|
|||||||
var navList = selector(db.Queryable<object>().Filter(navEntityInfo.Type).AS(navEntityInfo.DbTableName)
|
var navList = selector(db.Queryable<object>().Filter(navEntityInfo.Type).AS(navEntityInfo.DbTableName)
|
||||||
.WhereIF(navObjectNameColumnInfo.Navigat.WhereSql.HasValue(), navObjectNameColumnInfo.Navigat.WhereSql)
|
.WhereIF(navObjectNameColumnInfo.Navigat.WhereSql.HasValue(), navObjectNameColumnInfo.Navigat.WhereSql)
|
||||||
.WhereIF(sqlObj.WhereString.HasValue(),sqlObj.WhereString)
|
.WhereIF(sqlObj.WhereString.HasValue(),sqlObj.WhereString)
|
||||||
.AddParameters(sqlObj.Parameters).Where(conditionalModels));
|
.AddParameters(sqlObj.Parameters).Where(conditionalModels)
|
||||||
|
.Select(sqlObj.SelectString));
|
||||||
var groupQuery = (from l in list
|
var groupQuery = (from l in list
|
||||||
join n in navList
|
join n in navList
|
||||||
on navColumn.PropertyInfo.GetValue(l).ObjToString()
|
on navColumn.PropertyInfo.GetValue(l).ObjToString()
|
||||||
@@ -593,60 +594,7 @@ namespace SqlSugar
|
|||||||
}
|
}
|
||||||
else if (method.Method.Name == "Select")
|
else if (method.Method.Name == "Select")
|
||||||
{
|
{
|
||||||
var exp = method.Arguments[1];
|
Select(properyName, result, method, queryable);
|
||||||
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);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else if (method.Method.Name == "OrderByDescending")
|
else if (method.Method.Name == "OrderByDescending")
|
||||||
{
|
{
|
||||||
@@ -679,6 +627,10 @@ namespace SqlSugar
|
|||||||
}
|
}
|
||||||
else if (method.Method.Name == "ToList")
|
else if (method.Method.Name == "ToList")
|
||||||
{
|
{
|
||||||
|
if (method.Arguments.Count > 1)
|
||||||
|
{
|
||||||
|
Select(properyName, result, method, queryable);
|
||||||
|
}
|
||||||
isList = true;
|
isList = true;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -706,6 +658,64 @@ namespace SqlSugar
|
|||||||
return result;
|
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)
|
private static void SetTableShortName(SqlInfo result, ISugarQueryable<object> queryable)
|
||||||
{
|
{
|
||||||
if (queryable.QueryBuilder.TableShortName.HasValue()&& result.TableShortName.IsNullOrEmpty())
|
if (queryable.QueryBuilder.TableShortName.HasValue()&& result.TableShortName.IsNullOrEmpty())
|
||||||
|
|||||||
@@ -9,6 +9,10 @@ namespace SqlSugar
|
|||||||
{
|
{
|
||||||
public static class CommonExtensions
|
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)
|
public static IEnumerable<T> WhereIF<T>(this IEnumerable<T> thisValue, bool isOk, Func<T, bool> predicate)
|
||||||
{
|
{
|
||||||
if (isOk)
|
if (isOk)
|
||||||
|
|||||||
Reference in New Issue
Block a user