Update nav cross db

This commit is contained in:
sunkaixuan
2024-03-28 13:48:45 +08:00
parent d8f93b2ae6
commit c1bb04409e
2 changed files with 33 additions and 4 deletions

View File

@@ -103,13 +103,21 @@ namespace SqlSugar
{ {
var attr= this.ProPertyEntity.Type.GetCustomAttribute<TenantAttribute>(); var attr= this.ProPertyEntity.Type.GetCustomAttribute<TenantAttribute>();
var configId = ((object)this.context.CurrentConnectionConfig.ConfigId).ObjToString(); var configId = ((object)this.context.CurrentConnectionConfig.ConfigId).ObjToString();
if (attr != null&& configId != attr.configId.ObjToString()) if (attr != null && configId != attr.configId.ObjToString())
{
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
{ {
var dbName = this.context.Root.GetConnection(attr.configId).Ado.Connection.Database;
tableName = queryable.QueryBuilder.LambdaExpressions.DbMehtods.GetTableWithDataBase tableName = queryable.QueryBuilder.LambdaExpressions.DbMehtods.GetTableWithDataBase
(queryable.QueryBuilder.Builder.GetTranslationColumnName(dbName), queryable.QueryBuilder.Builder.GetTranslationColumnName(tableName)); (queryable.QueryBuilder.Builder.GetTranslationColumnName(dbName), queryable.QueryBuilder.Builder.GetTranslationColumnName(tableName));
} }
} }
}
Type[] clearTypes = null; Type[] clearTypes = null;
var isClearFilter = false; var isClearFilter = false;
if (this._memberExpressionResolve?.Context?.SugarContext?.QueryBuilder != null) if (this._memberExpressionResolve?.Context?.SugarContext?.QueryBuilder != null)

View File

@@ -18,6 +18,27 @@ namespace SqlSugar
{ {
public class UtilMethods 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<Tuple<string, Type>> GetColumnInfo(IDataReader reader) public static List<Tuple<string, Type>> GetColumnInfo(IDataReader reader)
{ {
var columnInfo = new List<Tuple<string, Type>>(); var columnInfo = new List<Tuple<string, Type>>();