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

@@ -115,7 +115,7 @@ namespace SqlSugar
public virtual string ContainsArray(MethodCallExpressionModel model) public virtual string ContainsArray(MethodCallExpressionModel model)
{ {
var inValueIEnumerable = (IEnumerable)model.Args[0].MemberValue; var inValueIEnumerable = (IEnumerable)model.Args[0].MemberValue;
List<object> inValues = new List<object>(); List<object> inValues = new List<object>();
if (inValueIEnumerable != null) if (inValueIEnumerable != null)
{ {
foreach (var item in inValueIEnumerable) foreach (var item in inValueIEnumerable)
@@ -145,10 +145,14 @@ namespace SqlSugar
var isNvarchar = model.Args.Count == 3; var isNvarchar = model.Args.Count == 3;
if (inValues != null && inValues.Count > 0) 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(); 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 else
{ {
inValueString = inValues.ToArray().ToJoinSqlInVals(); inValueString = inValues.ToArray().ToJoinSqlInVals();

View File

@@ -103,11 +103,19 @@ 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 dbName = this.context.Root.GetConnection(attr.configId).Ado.Connection.Database; var context = this.context.Root.GetConnection(attr.configId);
tableName = queryable.QueryBuilder.LambdaExpressions.DbMehtods.GetTableWithDataBase var dbName = context.Ado.Connection.Database;
(queryable.QueryBuilder.Builder.GetTranslationColumnName(dbName), queryable.QueryBuilder.Builder.GetTranslationColumnName(tableName)); 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; Type[] clearTypes = 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>>();