mirror of
https://gitee.com/dotnetchina/SqlSugar.git
synced 2025-10-27 03:09:34 +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.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}\")"));
|
||||
}
|
||||
else
|
||||
|
||||
@@ -695,5 +695,9 @@ namespace SqlSugar
|
||||
var parameterNameB = model.Args[1].MemberName;
|
||||
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 JsonArrayAny(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)
|
||||
{
|
||||
var nav = new OneToOneNavgateExpression(this.Context?.SugarContext?.Context);
|
||||
nav.ExpContext = this.Context;
|
||||
var navN = new OneToOneNavgateExpressionN(this.Context?.SugarContext?.Context);
|
||||
if (nav.IsNavgate(expression))
|
||||
{
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Linq.Expressions;
|
||||
using System.Reflection;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
@@ -9,6 +10,7 @@ namespace SqlSugar
|
||||
{
|
||||
internal class OneToOneNavgateExpression
|
||||
{
|
||||
public ExpressionContext ExpContext;
|
||||
private SqlSugarProvider context;
|
||||
internal EntityInfo EntityInfo;
|
||||
internal EntityInfo ProPertyEntity;
|
||||
@@ -96,8 +98,20 @@ namespace SqlSugar
|
||||
pk = queryable.QueryBuilder.Builder.GetTranslationColumnName(pk);
|
||||
name = queryable.QueryBuilder.Builder.GetTranslationColumnName(name);
|
||||
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
|
||||
.AS(this.ProPertyEntity.DbTableName)
|
||||
.AS(tableName)
|
||||
.WhereIF(Navigat.WhereSql.HasValue(),Navigat.WhereSql)
|
||||
.Where($" {ShorName}.{name}={pk} ").Select(selectName).ToSql().Key;
|
||||
mapper.Sql = $" ({mapper.Sql}) ";
|
||||
|
||||
@@ -20,6 +20,10 @@ namespace SqlSugar
|
||||
}
|
||||
public partial class SqlServerMethod : DefaultDbMethod, IDbMethods
|
||||
{
|
||||
public override string GetTableWithDataBase(string dataBaseName, string tableName)
|
||||
{
|
||||
return $"{dataBaseName}.dbo.{tableName}";
|
||||
}
|
||||
public override string GetForXmlPath()
|
||||
{
|
||||
return " FOR XML PATH('')),1,len(N','),'') ";
|
||||
|
||||
Reference in New Issue
Block a user