mirror of
https://gitee.com/dotnetchina/SqlSugar.git
synced 2025-10-27 11:19:15 +08:00
Synchronization code
This commit is contained in:
@@ -1139,6 +1139,10 @@ namespace SqlSugar
|
|||||||
{
|
{
|
||||||
if (this.QueryBuilder.AsTables != null && this.QueryBuilder.AsTables.Any(it => it.Key == entityName))
|
if (this.QueryBuilder.AsTables != null && this.QueryBuilder.AsTables.Any(it => it.Key == entityName))
|
||||||
{
|
{
|
||||||
|
if (this.QueryBuilder.JoinQueryInfos.Count(it => it.TableName.EqualCase(tableName)) > 1)
|
||||||
|
{
|
||||||
|
Check.ExceptionEasy($"if same entity name ,.LeftJoin(db.Queryable<{entityName}>,(x,y..)=>....).As(\"{tableName}\")",$"存在相同实体,请使用.LeftJoin(db.Queryable<{entityName}>).As(\"{tableName}\",(x,y..)=>...)");
|
||||||
|
}
|
||||||
Check.Exception(true, ErrorMessage.GetThrowMessage($"use As<{tableName}>(\"{tableName}\")", $"请把 As(\"{tableName}\"), 改成 As<{tableName}实体>(\"{tableName}\")"));
|
Check.Exception(true, ErrorMessage.GetThrowMessage($"use As<{tableName}>(\"{tableName}\")", $"请把 As(\"{tableName}\"), 改成 As<{tableName}实体>(\"{tableName}\")"));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -695,5 +695,9 @@ namespace SqlSugar
|
|||||||
var parameterNameB = model.Args[1].MemberName;
|
var parameterNameB = model.Args[1].MemberName;
|
||||||
return $"(case when {parameterNameA}>{parameterNameB} then 1 when {parameterNameA}={parameterNameB} then 0 else -1 end)";
|
return $"(case when {parameterNameA}>{parameterNameB} then 1 when {parameterNameA}={parameterNameB} then 0 else -1 end)";
|
||||||
}
|
}
|
||||||
|
public virtual string GetTableWithDataBase(string dataBaseName,string tableName)
|
||||||
|
{
|
||||||
|
return $"{dataBaseName}.{tableName}";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -103,5 +103,6 @@ namespace SqlSugar
|
|||||||
string JsonListObjectAny(MethodCallExpressionModel model);
|
string JsonListObjectAny(MethodCallExpressionModel model);
|
||||||
string JsonArrayAny(MethodCallExpressionModel model);
|
string JsonArrayAny(MethodCallExpressionModel model);
|
||||||
string CompareTo(MethodCallExpressionModel model);
|
string CompareTo(MethodCallExpressionModel model);
|
||||||
|
string GetTableWithDataBase(string databaseName,string tableName);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -258,6 +258,7 @@ namespace SqlSugar
|
|||||||
private void ResolveMemberValue(ExpressionParameter parameter, ExpressionParameter baseParameter, MemberExpression expression, bool? isLeft, bool isSetTempData)
|
private void ResolveMemberValue(ExpressionParameter parameter, ExpressionParameter baseParameter, MemberExpression expression, bool? isLeft, bool isSetTempData)
|
||||||
{
|
{
|
||||||
var nav = new OneToOneNavgateExpression(this.Context?.SugarContext?.Context);
|
var nav = new OneToOneNavgateExpression(this.Context?.SugarContext?.Context);
|
||||||
|
nav.ExpContext = this.Context;
|
||||||
var navN = new OneToOneNavgateExpressionN(this.Context?.SugarContext?.Context);
|
var navN = new OneToOneNavgateExpressionN(this.Context?.SugarContext?.Context);
|
||||||
if (nav.IsNavgate(expression))
|
if (nav.IsNavgate(expression))
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -2,6 +2,7 @@
|
|||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Linq.Expressions;
|
using System.Linq.Expressions;
|
||||||
|
using System.Reflection;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
@@ -9,6 +10,7 @@ namespace SqlSugar
|
|||||||
{
|
{
|
||||||
internal class OneToOneNavgateExpression
|
internal class OneToOneNavgateExpression
|
||||||
{
|
{
|
||||||
|
public ExpressionContext ExpContext;
|
||||||
private SqlSugarProvider context;
|
private SqlSugarProvider context;
|
||||||
internal EntityInfo EntityInfo;
|
internal EntityInfo EntityInfo;
|
||||||
internal EntityInfo ProPertyEntity;
|
internal EntityInfo ProPertyEntity;
|
||||||
@@ -96,8 +98,20 @@ namespace SqlSugar
|
|||||||
pk = queryable.QueryBuilder.Builder.GetTranslationColumnName(pk);
|
pk = queryable.QueryBuilder.Builder.GetTranslationColumnName(pk);
|
||||||
name = queryable.QueryBuilder.Builder.GetTranslationColumnName(name);
|
name = queryable.QueryBuilder.Builder.GetTranslationColumnName(name);
|
||||||
selectName = queryable.QueryBuilder.Builder.GetTranslationColumnName(selectName);
|
selectName = queryable.QueryBuilder.Builder.GetTranslationColumnName(selectName);
|
||||||
|
var tableName = this.ProPertyEntity.DbTableName;
|
||||||
|
if (ExpContext?.SugarContext?.QueryBuilder?.IsCrossQueryWithAttr==true)
|
||||||
|
{
|
||||||
|
var attr= this.ProPertyEntity.Type.GetCustomAttribute<TenantAttribute>();
|
||||||
|
var configId = ((object)this.context.CurrentConnectionConfig.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));
|
||||||
|
}
|
||||||
|
}
|
||||||
mapper.Sql = queryable
|
mapper.Sql = queryable
|
||||||
.AS(this.ProPertyEntity.DbTableName)
|
.AS(tableName)
|
||||||
.WhereIF(Navigat.WhereSql.HasValue(),Navigat.WhereSql)
|
.WhereIF(Navigat.WhereSql.HasValue(),Navigat.WhereSql)
|
||||||
.Where($" {ShorName}.{name}={pk} ").Select(selectName).ToSql().Key;
|
.Where($" {ShorName}.{name}={pk} ").Select(selectName).ToSql().Key;
|
||||||
mapper.Sql = $" ({mapper.Sql}) ";
|
mapper.Sql = $" ({mapper.Sql}) ";
|
||||||
|
|||||||
@@ -20,6 +20,10 @@ namespace SqlSugar
|
|||||||
}
|
}
|
||||||
public partial class SqlServerMethod : DefaultDbMethod, IDbMethods
|
public partial class SqlServerMethod : DefaultDbMethod, IDbMethods
|
||||||
{
|
{
|
||||||
|
public override string GetTableWithDataBase(string dataBaseName, string tableName)
|
||||||
|
{
|
||||||
|
return $"{dataBaseName}.dbo.{tableName}";
|
||||||
|
}
|
||||||
public override string GetForXmlPath()
|
public override string GetForXmlPath()
|
||||||
{
|
{
|
||||||
return " FOR XML PATH('')),1,len(N','),'') ";
|
return " FOR XML PATH('')),1,len(N','),'') ";
|
||||||
|
|||||||
Reference in New Issue
Block a user