This is probably not the answer you need, but it seems that it mainly concerns the allocation of the appropriate code to the βnewβ level of data access.
If you abstract data access through interfaces, you can use any data access available to you. I'm just not 100% sure how this applies to things like Enity Framework.
The reason that I will stick to this path is that it allows you to very well understand the problems that make the application easier to work over time, and this does not do it at the expense of performance (in my experience).
As a first step - instead of rewriting, which I would like to do, just draw the Data layer in place and cross it out so you can work with it.
At the same time, you can make some evidence of working on concepts with materials such as the Enity Framework, so that when you are ready to reorganize the new DAL, you have reliable information to substantiate your decision.
Just remember that the "quality of execution" must be balanced with the "evolutionary" :)
source share