Synchronization code

This commit is contained in:
sunkaixuan 2024-02-05 20:25:12 +08:00
parent f6dd5de7f5
commit d1ece300ac
2 changed files with 15 additions and 12 deletions

View File

@ -24,26 +24,29 @@ namespace SqlSugar
); );
return conditionalExpression; return conditionalExpression;
} }
internal static bool IsOwsOne(ExpressionContext context, Expression member) internal static bool IsOwnsOne(ExpressionContext context, Expression member)
{ {
var isOwsOne = false; var isOwnsOne = false;
if (context?.SugarContext?.Context == null)
{
return false;
}
if (member is MemberExpression memberExp) if (member is MemberExpression memberExp)
{ {
var name = memberExp?.Member?.Name; var name = memberExp?.Member?.Name;
if (memberExp.Expression is MemberExpression parentMemberExp) if (memberExp?.Expression is MemberExpression parentMemberExp)
{ {
if (name != null && parentMemberExp.Expression is ParameterExpression) if (name != null && parentMemberExp?.Expression is ParameterExpression rootExp)
{ {
var rootExp = (parentMemberExp.Expression as ParameterExpression);
var entityInfo = context?.SugarContext?.Context?.EntityMaintenance?.GetEntityInfo(rootExp.Type); var entityInfo = context?.SugarContext?.Context?.EntityMaintenance?.GetEntityInfo(rootExp.Type);
var navColumn = entityInfo.Columns.FirstOrDefault(it => it.PropertyName == name); var navColumn = entityInfo?.Columns?.FirstOrDefault(it => it.PropertyName == name);
isOwsOne = navColumn?.ForOwnsOnePropertyInfo != null; isOwnsOne = navColumn?.ForOwnsOnePropertyInfo != null;
} }
} }
} }
return isOwsOne; return isOwnsOne;
} }
internal static EntityColumnInfo GetOwsOneColumnInfo(ExpressionContext context, Expression member) internal static EntityColumnInfo GetOwnsOneColumnInfo(ExpressionContext context, Expression member)
{ {
EntityColumnInfo entityColumnInfo = new EntityColumnInfo(); EntityColumnInfo entityColumnInfo = new EntityColumnInfo();
if (member is MemberExpression memberExp) if (member is MemberExpression memberExp)

View File

@ -457,9 +457,9 @@ namespace SqlSugar
private void ResolveMemberValue(ExpressionParameter parameter, ExpressionParameter baseParameter, bool? isLeft, bool isSetTempData, MemberExpression expression) private void ResolveMemberValue(ExpressionParameter parameter, ExpressionParameter baseParameter, bool? isLeft, bool isSetTempData, MemberExpression expression)
{ {
if (ExpressionTool.IsOwsOne(this.Context, expression)) if (ExpressionTool.IsOwnsOne(this.Context, expression))
{ {
var column = ExpressionTool.GetOwsOneColumnInfo(this.Context, expression); var column = ExpressionTool.GetOwnsOneColumnInfo(this.Context, expression);
var columnName = column.DbColumnName; var columnName = column.DbColumnName;
if (this.Context.IsJoin) if (this.Context.IsJoin)
{ {