From 50f262924d0b94ff9f262d36e20b84327e2eafe3 Mon Sep 17 00:00:00 2001 From: sunkaixuan <610262374@qq.com> Date: Tue, 4 Oct 2022 20:56:52 +0800 Subject: [PATCH] Crosss database query --- .../SqlSugar/Abstract/QueryableProvider/NavigatManager.cs | 6 ++++-- Src/Asp.NetCore2/SqliteTest/UnitTest/CrossDatabase03.cs | 6 ++++++ 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/Src/Asp.NetCore2/SqlSugar/Abstract/QueryableProvider/NavigatManager.cs b/Src/Asp.NetCore2/SqlSugar/Abstract/QueryableProvider/NavigatManager.cs index f72203d89..fb935dd71 100644 --- a/Src/Asp.NetCore2/SqlSugar/Abstract/QueryableProvider/NavigatManager.cs +++ b/Src/Asp.NetCore2/SqlSugar/Abstract/QueryableProvider/NavigatManager.cs @@ -369,7 +369,9 @@ namespace SqlSugar { var navEntity = navObjectNameColumnInfo.PropertyInfo.PropertyType.GetGenericArguments()[0]; var navEntityInfo = this.Context.EntityMaintenance.GetEntityInfo(navEntity); - this.Context.InitMappingInfo(navEntityInfo.Type); + var childDb = this.Context; + childDb = GetCrossDatabase(childDb, navEntityInfo.Type); + childDb.InitMappingInfo(navEntityInfo.Type); var navColumn = navEntityInfo.Columns.FirstOrDefault(it => it.PropertyName == navObjectNameColumnInfo.Navigat.Name); Check.ExceptionEasy(navColumn == null, $"{navEntityInfo.EntityName} not found {navObjectNameColumnInfo.Navigat.Name} ", $"实体 {navEntityInfo.EntityName} 未找到导航配置列 {navObjectNameColumnInfo.Navigat.Name} "); //var navType = navObjectNamePropety.PropertyType; @@ -393,7 +395,7 @@ namespace SqlSugar if (list.Any() && navObjectNamePropety.GetValue(list.First()) == null) { - var navList = selector(this.Context.Queryable(sqlObj.TableShortName).AS(navEntityInfo.DbTableName).Filter(navEntityInfo.Type).AddParameters(sqlObj.Parameters).Where(conditionalModels).WhereIF(sqlObj.WhereString.HasValue(), sqlObj.WhereString).Select(sqlObj.SelectString).OrderByIF(sqlObj.OrderByString.HasValue(), sqlObj.OrderByString)); + var navList = selector(childDb.Queryable(sqlObj.TableShortName).AS(navEntityInfo.DbTableName).Filter(navEntityInfo.Type).AddParameters(sqlObj.Parameters).Where(conditionalModels).WhereIF(sqlObj.WhereString.HasValue(), sqlObj.WhereString).Select(sqlObj.SelectString).OrderByIF(sqlObj.OrderByString.HasValue(), sqlObj.OrderByString)); if (navList.HasValue()) { //var setValue = navList diff --git a/Src/Asp.NetCore2/SqliteTest/UnitTest/CrossDatabase03.cs b/Src/Asp.NetCore2/SqliteTest/UnitTest/CrossDatabase03.cs index 31d56f996..08356faa1 100644 --- a/Src/Asp.NetCore2/SqliteTest/UnitTest/CrossDatabase03.cs +++ b/Src/Asp.NetCore2/SqliteTest/UnitTest/CrossDatabase03.cs @@ -28,6 +28,12 @@ namespace OrmTest .Includes(z => z.Order) .ToList(); + + var list2 = db.QueryableWithAttr() + .CrossQueryWithAttr() + .Includes(z => z.Items) + .ToList(); + Console.WriteLine("OrderDb"); foreach (var item in db.GetConnection("OrderDb").DbMaintenance.GetTableInfoList(false)) {