Это одна распространенная проблема, которая возникает, вероятно, с каждой устаревшей системой, которую люди пытаются обновить.
Не вижу смысла в том, что вы создаете "сотни" бизнес-объектов и копируете данные из объектов данных EF в свои? Вы все еще взаимодействуете с EF и вашими бизнес-объектами!
Чтобы пройти со связью, IoC
следует использовать там, где вы можете рассмотреть возможность отделения от уровня доступа к данным от бизнес-уровня. И, безусловно, вы можете переключать ORM с очень небольшими затратами времени. Это красота separation of concern
.
В индустрии программного обеспечения, если вы хотите сократить расходы сейчас, вам, вероятно, придется платить больше в долгосрочной перспективе (если вам нужно изменить или ORM еще раз).
Постарайтесь договориться с вашим боссом о качестве, которое сейчас может быть немного дорогостоящим, но определенно принесет пользу в долгосрочной перспективе.
А в вашем случае вы можете рассмотреть EF Code First
. Это определенно даст вам лучшее представление, чем «База данных в первую очередь» в вашей структуре слоя доступа к данным.
Вы также можете создавать генераторы кода для создания своего уровня доступа к данным так, как вы хотите, что сэкономит сотни человеко-часов, плюс вы можете получить лучшую реализацию вашего модуля. Я бы посоветовал вам перейти на CodeSmith Generator. Есть немного кривой обучения, но оно того стоит.
Помните, что разделение доступа к данным не является решением для обновления устаревшей системы. Я видел во многих случаях, когда обновление и поддержание основной функциональности становится самой сложной работой в мире. И ничего не поделаешь, если деловые люди не решатся на реальное обновление, когда они сталкиваются с проигрышами.
Попробуйте определить основные компоненты, и DAL должен быть одним из тех, которые должны быть обновлены.