/// <summary> /// This is an internal API that supports the Entity Framework Core infrastructure and not subject to /// the same compatibility standards as public APIs. It may be changed or removed without notice in /// any release. You should only use it directly in your code with extreme caution and knowing that /// doing so can result in application failures when updating to a new Entity Framework Core release. /// </summary> protected override Expression VisitMember(MemberExpression memberExpression) { Check.NotNull(memberExpression, nameof(memberExpression)); return(TryBindMember(memberExpression.Expression, MemberIdentity.Create(memberExpression.Member), out var result) ? result : TranslationFailed(memberExpression.Expression, Visit(memberExpression.Expression), out var sqlInnerExpression) ? null : _memberTranslatorProvider.Translate(sqlInnerExpression, memberExpression.Member, memberExpression.Type)); }
protected override Expression VisitMember(MemberExpression memberExpression) { var innerExpression = Visit(memberExpression.Expression); if (TryBindProperty(innerExpression, MemberIdentity.Create(memberExpression.Member), out var result)) { return(result); } return(TranslationFailed(memberExpression.Expression, innerExpression) ? null : _memberTranslatorProvider.Translate((SqlExpression)innerExpression, memberExpression.Member, memberExpression.Type)); }
protected override Expression VisitMember(MemberExpression memberExpression) { var innerExpression = Visit(memberExpression.Expression); if (innerExpression is EntityShaperExpression entityShaper) { return(BindProperty(entityShaper, entityShaper.EntityType.FindProperty(memberExpression.Member.GetSimpleMemberName()))); } return(TranslationFailed(memberExpression.Expression, innerExpression) ? null : _memberTranslatorProvider.Translate((SqlExpression)innerExpression, memberExpression.Member, memberExpression.Type)); }
protected override Expression VisitMember(MemberExpression memberExpression) { var boundProperty = BindProperty(memberExpression.Expression, memberExpression.Member.GetSimpleMemberName()); if (boundProperty != null) { return(boundProperty); } var innerExpression = Visit(memberExpression.Expression); return(TranslationFailed(memberExpression.Expression, innerExpression) ? null : _memberTranslatorProvider.Translate((SqlExpression)innerExpression, memberExpression.Member, memberExpression.Type)); }
protected override Expression VisitMember(MemberExpression memberExpression) { var innerExpression = Visit(memberExpression.Expression); if (innerExpression is EntityProjectionExpression || (innerExpression is UnaryExpression innerUnaryExpression && innerUnaryExpression.NodeType == ExpressionType.Convert && innerUnaryExpression.Operand is EntityProjectionExpression)) { return(BindProperty(innerExpression, memberExpression.Member.GetSimpleMemberName())); } return(TranslationFailed(memberExpression.Expression, innerExpression) ? null : _memberTranslatorProvider.Translate((SqlExpression)innerExpression, memberExpression.Member, memberExpression.Type)); }
protected override Expression VisitMember(MemberExpression memberExpression) { var innerExpression = Visit(memberExpression.Expression); if ((innerExpression is EntityProjectionExpression || (innerExpression is UnaryExpression innerUnaryExpression && innerUnaryExpression.NodeType == ExpressionType.Convert && innerUnaryExpression.Operand is EntityProjectionExpression)) && TryBindMember(innerExpression, MemberIdentity.Create(memberExpression.Member), out var result)) { return(result); } return(TranslationFailed(memberExpression.Expression, innerExpression) ? null : _memberTranslatorProvider.Translate((SqlExpression)innerExpression, memberExpression.Member, memberExpression.Type)); }
/// <summary> /// This is an internal API that supports the Entity Framework Core infrastructure and not subject to /// the same compatibility standards as public APIs. It may be changed or removed without notice in /// any release. You should only use it directly in your code with extreme caution and knowing that /// doing so can result in application failures when updating to a new Entity Framework Core release. /// </summary> protected override Expression VisitMember(MemberExpression memberExpression) => TryBindMember(memberExpression.Expression, MemberIdentity.Create(memberExpression.Member), out var result) ? result : TranslationFailed(memberExpression.Expression, Visit(memberExpression.Expression), out var sqlInnerExpression) ? null : _memberTranslatorProvider.Translate(sqlInnerExpression, memberExpression.Member, memberExpression.Type);