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,11 +103,19 @@ namespace SqlSugar
{
var attr= this.ProPertyEntity.Type.GetCustomAttribute<TenantAttribute>();
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;

View File

@@ -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<Tuple<string, Type>> GetColumnInfo(IDataReader reader)
{
var columnInfo = new List<Tuple<string, Type>>();