I expect union to be very difficult, so I'm loathe to jump in. :-) The trouble with Union is that LINQ queries can contain hierarchical data while SQL can only have relations with scalar fields, so for many queries there is no good translation that
encodes the correct semantics.

I just started exploring the possibility of adding UNION ALL support for increasing the performance of batch INSERT operations. The current batch RPC method seems okay, but we have a method that blasts data in chunks using UNION ALL (contains many, many
new records) rather than many statements..

I've also been studying the current code and think I need to insert a new translator either in the BuildExecuteBatch(...) method that will blow away the "expression" on ColumnAssignments (ultimately, the column values will come in the form of block UNION
ALL / SELECT's) and build a set of UnionOperator expressions combined with SELECTs.. Another option I thought of was to rip apart the InsertExpression to recognize that it has column declarations and assignments as two different things. The problem here is
that the insert expression processing doesn't seem to know anything about the fact that it's inside of a batch expression... hence my first approach.

This is really leading up to moving to table-valued-parameters for an even better perf boost.

Is anyone already doing this, and does anyone have any hints on where this layer of translation be inserted?