From 4afb3aedf42f0c991fc87c66e1d18fbfede6e1c0 Mon Sep 17 00:00:00 2001 From: sunkaixuan <610262374@qq.com> Date: Tue, 4 Oct 2022 22:58:33 +0800 Subject: [PATCH] Crosss database query --- .../Abstract/QueryableProvider/NavigatManager.cs | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/Src/Asp.NetCore2/SqlSugar/Abstract/QueryableProvider/NavigatManager.cs b/Src/Asp.NetCore2/SqlSugar/Abstract/QueryableProvider/NavigatManager.cs index fb935dd71..39333932f 100644 --- a/Src/Asp.NetCore2/SqlSugar/Abstract/QueryableProvider/NavigatManager.cs +++ b/Src/Asp.NetCore2/SqlSugar/Abstract/QueryableProvider/NavigatManager.cs @@ -205,7 +205,9 @@ namespace SqlSugar var bEntityInfo = this.Context.EntityMaintenance.GetEntityInfo(bEntity); var bPkColumn = bEntityInfo.Columns.FirstOrDefault(it => it.IsPrimarykey); Check.ExceptionEasy(bPkColumn==null, $"{bEntityInfo.EntityName} need primary key", $"{bEntityInfo.EntityName} 实体需要配置主键"); - this.Context.InitMappingInfo(bEntity); + var bDb = this.Context; + bDb = GetCrossDatabase(bDb,bEntity); + bDb.InitMappingInfo(bEntity); var listItemPkColumn = listItemEntity.Columns.Where(it => it.IsPrimarykey).FirstOrDefault(); Check.ExceptionEasy(listItemPkColumn == null, $"{listItemEntity.EntityName} need primary key", $"{listItemEntity.EntityName} 实体需要配置主键"); var ids = list.Select(it => it.GetType().GetProperty(listItemPkColumn.PropertyName).GetValue(it)).Select(it => it == null ? "null" : it).Distinct().ToList(); @@ -220,7 +222,9 @@ namespace SqlSugar FieldValue = String.Join(",", ids), CSharpTypeName = aColumn.PropertyInfo.PropertyType.Name })); - var queryable = this.Context.Queryable(); + var abDb = this.Context; + abDb = GetCrossDatabase(abDb, mappingEntity.Type); + var queryable = abDb.Queryable(); var abids = queryable.AS(mappingEntity.DbTableName).Filter(mappingEntity.Type).Where(conditionalModels).Select($"{queryable.SqlBuilder.GetTranslationColumnName(aColumn.DbColumnName)} as aid,{queryable.SqlBuilder.GetTranslationColumnName(bColumn.DbColumnName)} as bid").ToList(); List conditionalModels2 = new List(); @@ -232,7 +236,7 @@ namespace SqlSugar CSharpTypeName = bColumn.PropertyInfo.PropertyType.Name })); var sql = GetWhereSql(); - var bList = selector(this.Context.Queryable().AS(bEntityInfo.DbTableName).Filter(bEntityInfo.Type).AddParameters(sql.Parameters).Where(conditionalModels2).WhereIF(sql.WhereString.HasValue(),sql.WhereString).Select(sql.SelectString).OrderByIF(sql.OrderByString.HasValue(),sql.OrderByString)); + var bList = selector(bDb.Queryable().AS(bEntityInfo.DbTableName).Filter(bEntityInfo.Type).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)