Synchronization code

This commit is contained in:
sunkaixuan
2024-03-28 17:11:02 +08:00
parent 799cbf9a07
commit 9030135fd1
3 changed files with 39 additions and 6 deletions

View File

@@ -145,10 +145,14 @@ namespace SqlSugar
var isNvarchar = model.Args.Count == 3;
if (inValues != null && inValues.Count > 0)
{
if (isNvarchar&& model.Args[2].MemberValue.Equals(true))
if (isNvarchar && model.Args[2].MemberValue.Equals(true))
{
inValueString = inValues.ToArray().ToJoinSqlInValsN();
}
else if (inValues.Any()&&inValues.FirstOrDefault() is bool &&inValues.All(it => it is bool))
{
inValueString = string.Join(",", inValues.Select(it => Convert.ToBoolean(it) ? 1 : 0));
}
else
{
inValueString = inValues.ToArray().ToJoinSqlInVals();

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>>();