The core problem with the delete functionality as it exists with OpenAccess today, is that if you need to bulk delete a bunch of items from the database, you need to first load those entities from the database so the primary keys can be loaded. Once OpenAccess knows all the primary keys to be deleted, it could batch those up, but that won't help with the issue of all the selects that will occur in the process of loading the entities from the database so they can be deleted.
The solution to the problem is to have a Remove<TEntity> function that will accept a where clause for the entity in question, and then using that construct a SQL statement along the lines of:
&& some_other_value =
Then all you need to do is make sure ClearChanges() is called, so that the identity map is cleared for existing entities that might be loaded, but the delete would be a lot faster if you are deleting lots of entities.
It would also be nice to be able to do bulk updates using a where clause as well, without having to resort to SQL (once again a ClearChanges() would be needed).
As for bulk inserts, you cannot perform bulk inserts into the database if you care about the resulting primary keys for the entity and the primary key is an AUTOINC primary key, unless you implement something like a KeyTable (great idea though). However if you don't care about the resulting entities being tracked after the insert, then it is possible to batch them all up. We do that right now using custom code on top of the ADO.NET layer to build up bulk insert SQL, and I will probably just port that over to run on top of the new low level ADO.NET API. But it would be nice if this was handled in the API directly.