Update ValueObject

This commit is contained in:
sunkaixuan 2024-02-05 19:41:39 +08:00
parent 889431cdd9
commit 0afb2402e8
2 changed files with 51 additions and 1 deletions

View File

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

View File

@ -457,6 +457,19 @@ namespace SqlSugar
private void ResolveMemberValue(ExpressionParameter parameter, ExpressionParameter baseParameter, bool? isLeft, bool isSetTempData, MemberExpression expression)
{
if (ExpressionTool.IsOwsOne(this.Context, expression))
{
var column = ExpressionTool.GetOwsOneColumnInfo(this.Context, expression);
if (isSetTempData)
{
baseParameter.CommonTempData = column.DbColumnName;
}
else
{
AppendMember(parameter, isLeft, column.DbColumnName);
}
return;
}
var value = ExpressionTool.GetMemberValue(expression.Member, expression);
if (isSetTempData)
{