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); }
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)); }