diff --git a/Src/Asp.NetCore2/SqlSugar/ExpressionsToSql/ResolveItems/OneToOneNavgateExpression.cs b/Src/Asp.NetCore2/SqlSugar/ExpressionsToSql/ResolveItems/OneToOneNavgateExpression.cs index bfcf32e34..0ed3783c4 100644 --- a/Src/Asp.NetCore2/SqlSugar/ExpressionsToSql/ResolveItems/OneToOneNavgateExpression.cs +++ b/Src/Asp.NetCore2/SqlSugar/ExpressionsToSql/ResolveItems/OneToOneNavgateExpression.cs @@ -103,11 +103,19 @@ namespace SqlSugar { var attr= this.ProPertyEntity.Type.GetCustomAttribute(); var configId = ((object)this.context.CurrentConnectionConfig.ConfigId).ObjToString(); - if (attr != null&& configId != attr.configId.ObjToString()) + if (attr != null && configId != attr.configId.ObjToString()) { - var dbName = this.context.Root.GetConnection(attr.configId).Ado.Connection.Database; - tableName = queryable.QueryBuilder.LambdaExpressions.DbMehtods.GetTableWithDataBase - (queryable.QueryBuilder.Builder.GetTranslationColumnName(dbName), queryable.QueryBuilder.Builder.GetTranslationColumnName(tableName)); + var context = this.context.Root.GetConnection(attr.configId); + var dbName = context.Ado.Connection.Database; + if (context.CurrentConnectionConfig.DbLinkName.HasValue()) + { + tableName = UtilMethods.GetTableByDbLink(context, tableName, tableName, attr); + } + else + { + tableName = queryable.QueryBuilder.LambdaExpressions.DbMehtods.GetTableWithDataBase + (queryable.QueryBuilder.Builder.GetTranslationColumnName(dbName), queryable.QueryBuilder.Builder.GetTranslationColumnName(tableName)); + } } } Type[] clearTypes = null; diff --git a/Src/Asp.NetCore2/SqlSugar/Utilities/UtilMethods.cs b/Src/Asp.NetCore2/SqlSugar/Utilities/UtilMethods.cs index 3c977405c..33c6a80be 100644 --- a/Src/Asp.NetCore2/SqlSugar/Utilities/UtilMethods.cs +++ b/Src/Asp.NetCore2/SqlSugar/Utilities/UtilMethods.cs @@ -18,6 +18,27 @@ namespace SqlSugar { public class UtilMethods { + internal static string GetTableByDbLink(SqlSugarProvider context,string tableName, string oldTableName, TenantAttribute attr) + { + QueryBuilder queryBuilder=InstanceFactory.GetQueryBuilderWithContext(context); + var dbLinkName = context.Root.GetConnection(attr.configId).CurrentConnectionConfig.DbLinkName; + if (dbLinkName != null) + { + if (dbLinkName.First() == '@') + { + tableName = queryBuilder.Builder.GetTranslationColumnName(oldTableName) + dbLinkName; + } + else if (dbLinkName.Last() == '_') + { + tableName = dbLinkName + oldTableName; + } + else + { + tableName = dbLinkName + "." + queryBuilder.Builder.GetTranslationColumnName(oldTableName); + } + } + return tableName; + } public static List> GetColumnInfo(IDataReader reader) { var columnInfo = new List>();