Thanks for the compliments, Josh
And thanks for chiming in, guys
Batching the statements is currently not done as not every database supports it and there's no code to first generate the queries and then push them down to the db at once.
Changed entities are examined as well as their related entities, unless you specify you don't want to recurse through the graph, i.e. you specify false for recurse in the SaveEntity overload. As you save the entity each time recursive, it might be that it traverses the complete graph each time.
As said above, simply pass ecIL to SaveEntityCollection() and it should be more efficient. Also, you can try to start a transaction on the adapter before the loop, then in the loop, use adapter.SaveEntity(delIL, false, null, false); instead.
Or, use 1 save after the loop:
adapter.SaveEntityCollection(ecIL, false, false);
LLBLGen Pro doesn't cache generated SQL. This is because caching a generated query is pretty hard, i.e.: it is hard to find back a query based on changed entities. Therefore the query is generated each time an entity is about to be saved.