mirror of
https://gitee.com/dotnetchina/SqlSugar.git
synced 2025-07-16 16:50:41 +08:00
Update ValueObject
This commit is contained in:
parent
889431cdd9
commit
0afb2402e8
@ -24,7 +24,44 @@ namespace SqlSugar
|
|||||||
);
|
);
|
||||||
return conditionalExpression;
|
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)
|
internal static bool IsNavMember(ExpressionContext context, Expression member)
|
||||||
{
|
{
|
||||||
|
@ -457,6 +457,19 @@ 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))
|
||||||
|
{
|
||||||
|
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);
|
var value = ExpressionTool.GetMemberValue(expression.Member, expression);
|
||||||
if (isSetTempData)
|
if (isSetTempData)
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user