wait, if some day I want to switch from EF to another Framework for whatever reasons
No, you wont.
There are two reasons why what you are doing is bad idea. First. Changing ORM is extremely rare and building all your abstractions around something like that isis not a good ideasidea. Abstractions should first and foremost be build around things that change often, so you can add those changes without having to change the code. And in data-access layer, things that change most often are the entities, how you query those entities and how you persist them. Compare that to the extra slim possibility of completely replacing your data access layer and you are going to spend changing lots of code for things that really matter and just adding code for things that doesn'tdon't matter. Which is opposite to how it is supposed to be.
Second is the fact that ORMs, and data access in general are complex. Sometimes even more complex than applications that use them. Also, there are huge differences between them. Even thought they might seem same, the details make them behave differently at many corner cases. Trying to build abstractions around things so complex will inevitably result in both non-abstracting and leaky abstractions. So even if you are going to change persistence framework, you stillwill have to change many things in business layer or implement behavior so it is same as previous framework. This is actually what you are encountering. You are trying to abstract something that is too complex to be properly abstracted away without reimplementing the whole thing.
I would highly recommend you rethinking your design without the "can't use EF directly" mentality.