mirror of
https://gitee.com/dotnetchina/SqlSugar.git
synced 2025-06-28 13:34:32 +08:00
Synchronization code
This commit is contained in:
parent
bb45c25093
commit
c71a87b637
@ -17,5 +17,6 @@ namespace SqlSugar
|
||||
public List<SugarParameter> Parameters { get; set; }
|
||||
public List<MappingFieldsExpression> MappingExpressions { get; set; }
|
||||
public string TableShortName { get; set; }
|
||||
public Func<List<SplitTableInfo>, IEnumerable<SplitTableInfo>> SplitTable { get; set; }
|
||||
}
|
||||
}
|
||||
|
@ -372,7 +372,7 @@ namespace SqlSugar
|
||||
.Select(it => GetOneToOneSelectByColumnInfo(it,db)).ToList();
|
||||
sqlObj.SelectString = String.Join(",", columns);
|
||||
}
|
||||
var navList = selector(db.Queryable<object>().ClearFilter(QueryBuilder.RemoveFilters).Filter((navPkColumn.IsPrimarykey&& navPkCount==1) ? null : this.QueryBuilder?.IsDisabledGobalFilter == true ? null : navEntityInfo.Type).AS(GetDbTableName(navEntityInfo))
|
||||
var navList = selector(db.Queryable<object>().ClearFilter(QueryBuilder.RemoveFilters).Filter((navPkColumn.IsPrimarykey&& navPkCount==1) ? null : this.QueryBuilder?.IsDisabledGobalFilter == true ? null : navEntityInfo.Type).AS(GetDbTableName(navEntityInfo,sqlObj))
|
||||
.WhereIF(navObjectNameColumnInfo.Navigat.WhereSql.HasValue(), navObjectNameColumnInfo.Navigat.WhereSql)
|
||||
.WhereIF(sqlObj.WhereString.HasValue(), sqlObj.WhereString)
|
||||
.AddParameters(sqlObj.Parameters).Where(conditionalModels)
|
||||
@ -450,7 +450,7 @@ namespace SqlSugar
|
||||
.Select(it => GetOneToManySelectByColumnInfo(it,childDb)).ToList();
|
||||
sqlObj.SelectString = String.Join(",", columns);
|
||||
}
|
||||
var navList = selector(childDb.Queryable<object>(sqlObj.TableShortName).AS(GetDbTableName(navEntityInfo)).ClearFilter(QueryBuilder.RemoveFilters).Filter(this.QueryBuilder?.IsDisabledGobalFilter == true ? null : navEntityInfo.Type).AddParameters(sqlObj.Parameters).Where(conditionalModels).WhereIF(sqlObj.WhereString.HasValue(), sqlObj.WhereString).WhereIF(navObjectNameColumnInfo?.Navigat?.WhereSql!=null, navObjectNameColumnInfo?.Navigat?.WhereSql).Select(sqlObj.SelectString).OrderByIF(sqlObj.OrderByString.HasValue(), sqlObj.OrderByString));
|
||||
var navList = selector(childDb.Queryable<object>(sqlObj.TableShortName).AS(GetDbTableName(navEntityInfo, sqlObj)).ClearFilter(QueryBuilder.RemoveFilters).Filter(this.QueryBuilder?.IsDisabledGobalFilter == true ? null : navEntityInfo.Type).AddParameters(sqlObj.Parameters).Where(conditionalModels).WhereIF(sqlObj.WhereString.HasValue(), sqlObj.WhereString).WhereIF(navObjectNameColumnInfo?.Navigat?.WhereSql!=null, navObjectNameColumnInfo?.Navigat?.WhereSql).Select(sqlObj.SelectString).OrderByIF(sqlObj.OrderByString.HasValue(), sqlObj.OrderByString));
|
||||
if (navList.HasValue())
|
||||
{
|
||||
//var setValue = navList
|
||||
@ -550,7 +550,7 @@ namespace SqlSugar
|
||||
helper.NavEntity = navEntityInfo;
|
||||
helper.RootEntity = childDb.EntityMaintenance.GetEntityInfo<T>();
|
||||
var whereSql = helper.GetMppingSql(list, sqlObj.MappingExpressions);
|
||||
var navList = selector(childDb.Queryable<object>().AS(GetDbTableName(navEntityInfo)).AddParameters(sqlObj.Parameters).Where(whereSql,true).WhereIF(sqlObj.WhereString.HasValue(), sqlObj.WhereString).Select(sqlObj.SelectString).OrderByIF(sqlObj.OrderByString.HasValue(), sqlObj.OrderByString));
|
||||
var navList = selector(childDb.Queryable<object>().AS(GetDbTableName(navEntityInfo, sqlObj)).AddParameters(sqlObj.Parameters).Where(whereSql,true).WhereIF(sqlObj.WhereString.HasValue(), sqlObj.WhereString).Select(sqlObj.SelectString).OrderByIF(sqlObj.OrderByString.HasValue(), sqlObj.OrderByString));
|
||||
if (navList.HasValue())
|
||||
{
|
||||
foreach (var item in list)
|
||||
@ -586,7 +586,7 @@ namespace SqlSugar
|
||||
helper.NavEntity = navEntityInfo;
|
||||
helper.RootEntity = this.Context.EntityMaintenance.GetEntityInfo<T>();
|
||||
var whereSql = helper.GetMppingSql(list, sqlObj.MappingExpressions);
|
||||
var navList = selector(childDb.Queryable<object>().AS(GetDbTableName(navEntityInfo)).AddParameters(sqlObj.Parameters).Where(whereSql, true).WhereIF(sqlObj.WhereString.HasValue(), sqlObj.WhereString).Select(sqlObj.SelectString).OrderByIF(sqlObj.OrderByString.HasValue(), sqlObj.OrderByString));
|
||||
var navList = selector(childDb.Queryable<object>().AS(GetDbTableName(navEntityInfo, sqlObj)).AddParameters(sqlObj.Parameters).Where(whereSql, true).WhereIF(sqlObj.WhereString.HasValue(), sqlObj.WhereString).Select(sqlObj.SelectString).OrderByIF(sqlObj.OrderByString.HasValue(), sqlObj.OrderByString));
|
||||
if (navList.HasValue())
|
||||
{
|
||||
foreach (var item in list)
|
||||
@ -707,6 +707,11 @@ namespace SqlSugar
|
||||
}
|
||||
isList = true;
|
||||
}
|
||||
else if (method.Method.Name == "SplitTable")
|
||||
{
|
||||
var exp =(Expression<Func<List<SplitTableInfo>, IEnumerable<SplitTableInfo>>>) (item as MethodCallExpression).Arguments[1];
|
||||
result.SplitTable = exp.Compile();
|
||||
}
|
||||
else
|
||||
{
|
||||
Check.ExceptionEasy($"no support {item}", $"不支持表达式{item} 不支持方法{method.Method.Name}");
|
||||
@ -877,9 +882,13 @@ namespace SqlSugar
|
||||
}
|
||||
|
||||
|
||||
private string GetDbTableName(EntityInfo navEntityInfo)
|
||||
private string GetDbTableName(EntityInfo navEntityInfo,SqlInfo sqlInfo)
|
||||
{
|
||||
if (navEntityInfo.Type.GetCustomAttribute<SplitTableAttribute>() != null)
|
||||
if (navEntityInfo.Type.GetCustomAttribute<SplitTableAttribute>() != null&&sqlInfo.SplitTable!=null)
|
||||
{
|
||||
return "(" + this.Context.QueryableByObject(navEntityInfo.Type).SplitTable(sqlInfo.SplitTable).ToSqlString() + ") split_table";
|
||||
}
|
||||
else if (navEntityInfo.Type.GetCustomAttribute<SplitTableAttribute>() != null)
|
||||
{
|
||||
return "("+this.Context.QueryableByObject(navEntityInfo.Type).SplitTable().ToSqlString()+") split_table";
|
||||
}
|
||||
|
19
Src/Asp.Net/SqlSugar/SpliteTable/SplitTableExtensions.cs
Normal file
19
Src/Asp.Net/SqlSugar/SpliteTable/SplitTableExtensions.cs
Normal file
@ -0,0 +1,19 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
|
||||
namespace SqlSugar.SplitTableExtensions
|
||||
{
|
||||
public static class Extensions
|
||||
{
|
||||
public static List<T> SplitTable<T>(this List<T> thisValue,Func<List<SplitTableInfo>, IEnumerable<SplitTableInfo>> getTableNamesFunc)
|
||||
{
|
||||
return thisValue;
|
||||
}
|
||||
public static List<T> SplitTable<T>(this T thisValue, Func<List<SplitTableInfo>, IEnumerable<SplitTableInfo>> getTableNamesFunc)
|
||||
{
|
||||
return new List<T>();
|
||||
}
|
||||
}
|
||||
}
|
@ -299,6 +299,7 @@
|
||||
<Compile Include="Realization\QuestDB\SqlBuilder\QuestDBInsertBuilder.cs" />
|
||||
<Compile Include="Realization\QuestDB\SqlBuilder\QuestDBQueryBuilder.cs" />
|
||||
<Compile Include="Realization\QuestDB\SqlBuilder\QuestDBUpdateBuilder.cs" />
|
||||
<Compile Include="SpliteTable\SplitTableExtensions.cs" />
|
||||
<Compile Include="SugarUnitOfWork.cs" />
|
||||
<Compile Include="Entities\SugarAbMapping.cs" />
|
||||
<Compile Include="Entities\JoinMapper.cs" />
|
||||
|
Loading…
Reference in New Issue
Block a user