For well over a year now I've been talking about how it is possible with EF to write a provider that sits between the EF and the native database provider.
There are lots of reasons why you might do this. Here are some examples, you could write a:
Well Jarek has put his money where my mouth was ;)
He is a team mate on the EF team and he has just released two sample wrapping providers, one that does tracing and one that does caching using Velocity (cool), here on Code Gallery.
If you want to find out more go check out his blog post