Synchronization code

This commit is contained in:
sunkaixuan
2023-07-10 20:04:45 +08:00
parent 9ae8a9a3c9
commit 88de557973

View File

@@ -114,9 +114,13 @@ namespace SqlSugar
{ {
lastShortName = OneToMany(ref formInfo, ref i, queryable, ref index, item); lastShortName = OneToMany(ref formInfo, ref i, queryable, ref index, item);
} }
else if (item.Nav.NavigatType == NavigateType.OneToOne)
{
lastShortName = OneToOne(ref formInfo, ref i, queryable, ref index, item);
}
else else
{ {
lastShortName = ManyToMany(ref formInfo, ref i, queryable, ref index, item); lastShortName = ManyToMany(ref formInfo, ref i, queryable, ref index, item);
} }
} }
var isAny = (memberInfo.Expression as MethodCallExpression).Method.Name == "Any"; var isAny = (memberInfo.Expression as MethodCallExpression).Method.Name == "Any";
@@ -157,16 +161,50 @@ namespace SqlSugar
var shortName = item.ThisEntityInfo.DbTableName + i; var shortName = item.ThisEntityInfo.DbTableName + i;
EntityColumnInfo pkColumn; EntityColumnInfo pkColumn;
EntityColumnInfo navColum; EntityColumnInfo navColum;
if (index == 0) //if (index == 0)
{ //{
pkColumn = item.ThisEntityInfo.Columns.FirstOrDefault(it => it.PropertyName == item.Nav.Name); pkColumn = item.ThisEntityInfo.Columns.FirstOrDefault(it => it.PropertyName == item.Nav.Name);
navColum = item.ParentEntityInfo.Columns.FirstOrDefault(it => it.IsPrimarykey); navColum = item.ParentEntityInfo.Columns.FirstOrDefault(it => it.IsPrimarykey);
} if (item.Nav.Name2.HasValue())
else {
{ navColum = item.ParentEntityInfo.Columns.FirstOrDefault(it => it.PropertyName == item.Nav.Name2);
pkColumn = item.ThisEntityInfo.Columns.FirstOrDefault(it => it.IsPrimarykey); }
//}
//else
//{
// pkColumn = item.ThisEntityInfo.Columns.FirstOrDefault(it => it.IsPrimarykey);
// navColum = item.ParentEntityInfo.Columns.FirstOrDefault(it => it.PropertyName == item.Nav.Name);
//}
Check.ExceptionEasy(pkColumn == null, $"{item.ThisEntityInfo.EntityName} need PrimayKey", $"使用导航属性{item.ThisEntityInfo.EntityName} 缺少主键");
var on = $" {shortName}.{queryable.SqlBuilder.GetTranslationColumnName(pkColumn.DbColumnName)}={formInfo.ThisEntityInfo.DbTableName + (i - 1)}.{queryable.SqlBuilder.GetTranslationColumnName(navColum.DbColumnName)}";
queryable.AddJoinInfo(item.ThisEntityInfo.DbTableName, shortName, on, JoinType.Inner);
++i;
index++;
lastShortName = shortName;
formInfo = item;
return lastShortName;
}
private static string OneToOne(ref ExpressionItems formInfo, ref int i, ISugarQueryable<object> queryable, ref int index, ExpressionItems item)
{
string lastShortName;
var shortName = item.ThisEntityInfo.DbTableName + i;
EntityColumnInfo pkColumn;
EntityColumnInfo navColum;
//if (index == 0)
//{
// pkColumn = item.ThisEntityInfo.Columns.FirstOrDefault(it => it.PropertyName == item.Nav.Name);
// navColum = item.ParentEntityInfo.Columns.FirstOrDefault(it => it.IsPrimarykey);
//}
//else
//{
pkColumn = item.ThisEntityInfo.Columns.FirstOrDefault(it =>it.IsPrimarykey );
navColum = item.ParentEntityInfo.Columns.FirstOrDefault(it => it.PropertyName == item.Nav.Name); navColum = item.ParentEntityInfo.Columns.FirstOrDefault(it => it.PropertyName == item.Nav.Name);
} if (item.Nav.Name2.HasValue())
{
pkColumn = item.ThisEntityInfo.Columns.FirstOrDefault(it => it.PropertyName == item.Nav.Name2);
}
//}
Check.ExceptionEasy(pkColumn == null, $"{item.ThisEntityInfo.EntityName} need PrimayKey", $"使用导航属性{item.ThisEntityInfo.EntityName} 缺少主键"); Check.ExceptionEasy(pkColumn == null, $"{item.ThisEntityInfo.EntityName} need PrimayKey", $"使用导航属性{item.ThisEntityInfo.EntityName} 缺少主键");
var on = $" {shortName}.{queryable.SqlBuilder.GetTranslationColumnName(pkColumn.DbColumnName)}={formInfo.ThisEntityInfo.DbTableName + (i - 1)}.{queryable.SqlBuilder.GetTranslationColumnName(navColum.DbColumnName)}"; var on = $" {shortName}.{queryable.SqlBuilder.GetTranslationColumnName(pkColumn.DbColumnName)}={formInfo.ThisEntityInfo.DbTableName + (i - 1)}.{queryable.SqlBuilder.GetTranslationColumnName(navColum.DbColumnName)}";
queryable.AddJoinInfo(item.ThisEntityInfo.DbTableName, shortName, on, JoinType.Inner); queryable.AddJoinInfo(item.ThisEntityInfo.DbTableName, shortName, on, JoinType.Inner);
@@ -178,7 +216,7 @@ namespace SqlSugar
} }
private string ManyToMany(ref ExpressionItems formInfo, ref int i, ISugarQueryable<object> queryable, ref int index, ExpressionItems item) private string ManyToMany(ref ExpressionItems formInfo, ref int i, ISugarQueryable<object> queryable, ref int index, ExpressionItems item)
{ {
string lastShortName; string lastShortName;
var bshortName = item.ThisEntityInfo.DbTableName + i; var bshortName = item.ThisEntityInfo.DbTableName + i;