Push Entity Framework exceptions to business layer
I think this is not a good idea for the following few reasons. 

You write


  I don't want my business layer to know if I am using EF under my DAL.



and yet the ExecptionType enum contains all the values strictly related to Entity Framework.
Also the name of the EfResponse object already suggests it's Entity Framework related too with its Ef prefix.
Then the public class MyDbcontext : DbContext is derived from DbContext which agian is Entity Framework.


This means that the EfResponse and the MyDbcontext aren't abstract enough and they don't separate you from either Entity Framework or any other DAL. They just use different names for some EF types.



Other things that aren't implemented correctly are the two detail properties. We don't use the Get prefix for them. Only for methods. The way they work is also a little bit strange. I first need to check the type of the exception to know which property I'm allowed to use or otherwise it'll might throw. They should return null if there is no exception of this type. The only exception they are allowed to throw is the InvalidOperationException if a EfResponse object is in the Success state.

The property RowsModified should not be publically settable. This should be a part of the constructor.



Some time ago there was a question about something similar that you might find interesting: Refactoring away from exceptions. I think what you are trying to do is virtually the same. I tried it and it's a real mess when you once start using it. You're better off with a simple repository encapsulating all db operations an their exceptions.