protected internal virtual Expression VisitImplementedByAll(ImplementedByAllExpression iba)
    {
        var id             = Visit(iba.Id);
        var typeId         = (TypeImplementedByAllExpression)Visit(iba.TypeId);
        var externalPeriod = (IntervalExpression?)Visit(iba.ExternalPeriod);

        if (id != iba.Id || typeId != iba.TypeId || externalPeriod != iba.ExternalPeriod)
        {
            return(new ImplementedByAllExpression(iba.Type, id, typeId, externalPeriod));
        }
        return(iba);
    }
Example #2
0
        internal override Expression GetExpression(Alias tableAlias, QueryBinder binder, Expression id)
        {
            Expression result = new ImplementedByAllExpression(IsLite ? Lite.Extract(FieldType) : FieldType,
                                                               new ColumnExpression(Column.Type, tableAlias, Column.Name),
                                                               new TypeImplementedByAllExpression(new PrimaryKeyExpression(new ColumnExpression(ColumnType.Type.Nullify(), tableAlias, ColumnType.Name))));

            if (this.IsLite)
            {
                return(binder.MakeLite(result, null));
            }
            else
            {
                return(result);
            }
        }
 protected internal override Expression VisitImplementedByAll(ImplementedByAllExpression rba)
 {
     return(Expression.Call(retriever, miRequestIBA.MakeGenericMethod(rba.Type),
                            Visit(NullifyColumn(rba.TypeId.TypeColumn)),
                            Visit(NullifyColumn(rba.Id))));
 }
 private static ImplementedByAllExpression CombineIBA(ImplementedByAllExpression a, ImplementedByAllExpression b, Type type, Func <Expression, Expression, Expression> combiner)
 {
     return(new ImplementedByAllExpression(type, combiner(a.Id, b.Id),
                                           new TypeImplementedByAllExpression(new PrimaryKeyExpression(combiner(a.TypeId.TypeColumn, b.TypeId.TypeColumn))), null));
 }