예제 #1
0
        protected internal virtual Expression VisitAdditionalField(AdditionalFieldExpression ml)
        {
            var newBackID = (PrimaryKeyExpression)Visit(ml.BackID);

            if (newBackID != ml.BackID)
            {
                return(new AdditionalFieldExpression(ml.Type, newBackID, ml.Route));
            }
            return(ml);
        }
예제 #2
0
        protected internal virtual Expression VisitAdditionalField(AdditionalFieldExpression ml)
        {
            var newBackID      = (PrimaryKeyExpression)Visit(ml.BackID);
            var externalPeriod = (NewExpression)Visit(ml.ExternalPeriod);

            if (newBackID != ml.BackID || externalPeriod != ml.ExternalPeriod)
            {
                return(new AdditionalFieldExpression(ml.Type, newBackID, externalPeriod, ml.Route));
            }
            return(ml);
        }
예제 #3
0
        protected internal override Expression VisitAdditionalField(AdditionalFieldExpression afe)
        {
            var exp = binder.BindAdditionalField(afe, entityCompleter: true);

            var newEx = this.Visit(exp);

            if (newEx is ProjectionExpression newProj && newProj.Projector.Type.IsInstantiationOf(typeof(MList <> .RowIdElement)))
            {
                return(new MListProjectionExpression(afe.Type, newProj));
            }

            return(newEx);
        }
예제 #4
0
 protected virtual bool CompareMList(AdditionalFieldExpression a, AdditionalFieldExpression b)
 {
     return(a.Route.Equals(b.Route) &&
            Compare(a.BackID, b.BackID));
 }