С "Ложный миф инкапсуляции доступа к данным в DAL" :
«Я хотел бы спроектировать систему / приложение, используя NHibernate. Но я
также хочу быть настолько гибким, что в будущем, если я отключу NHibernate
и использовать фреймворк ADO.NET Entity или другой фреймворк
приложение не должно аварийно завершить работу. "
Короче говоря, я полностью против
даже пытаясь сделать что-то подобное.
Он основан на ошибочных предположениях
Многое за этим стоит
основанный на историческом двигателе, построенном в
время, когда слои доступа к данным
прямой доступ к базе данных, используя его
собственный диалект, что приводит к необходимости
создать именно такую инкапсуляцию в
Для поддержки нескольких баз данных.
Проблема с этим диском в том, что он
больше не фактор, все современное
OR / Ms может обрабатывать несколько баз данных
эффективно. Кроме того, современные OR / M являются
больше не просто способы выполнить некоторые
SQL и получить результат обратно, который
как старый стиль DAL были написаны.
OR / M берет на себя гораздо больше
обязанности, от таких вещей, как
отслеживание изменений для управления кешем,
от обеспечения оптимистичного параллелизма
управлять оптимальным общением с
база данных.
И эти функции очень важны. Не
только это, но они разные
между каждым ИЛИ / М.
Это не работает, и вы узнаете об этом слишком поздно
Основная проблема в том, что как бы
старайся, там будут
тонкие и не очень тонкие различия
между различными OR / Ms, эти изменения
может кардинально повлиять на то, как вы строите
ваше заявление.
Так как вы перемещаетесь между OR / Ms?
Есть причины, по которым некоторые люди хотят перейти от одной технологии доступа к данным к другой. Я участвовал в нескольких таких усилиях, и подход, который мы использовали в каждом из этих случаев, заключался в портировании , вместо того, чтобы пытаться отбросить новую реализацию IDataAccess.