I may be wrong in some of this, so take my comments with a grain of salt.
I haven’t seen any adapters support the return of data during an insert, delete or update operation. My guess is that’s because there is no standard for what can be returned, and trying to account for all possibilities would result in significant overhead trying to return data that may or may not be used.
Doing a select after an insert, like you’ve done, is rather risky. You’ll have to code for the times when no rows are returned. This may or may not be reasonable.
Another approach is to use stored procedures. You can have the proc do anything you want and return anything you need (identity, rowcount, etc.) You can get some performance benefit too, depending on what you’re doing. We did that on a B2B project a couple years ago and it worked well. The downside of course is working with stored procs, which can be an administrative bottleneck depending upon your company and DBAs.