В одном из наших проектов мы использовали LLBLGenPro в качестве нашего OR / M. Но поскольку мы не хотели засорять наше приложение объектами LLBL, мы сопоставили их с нашими BO, прежде чем они попадут в клиента. Это означает отображение их обратно на объекты LLBL перед повторным попаданием в БД. Код DAL оказался очень большой частью нашего приложения. Не 50%, но значительный.
В проекте, над которым я сейчас работаю, я начал с db40 в надежде минимизировать объем DAL. И это было очень мало, но я столкнулся с проблемами с db40 и пришлось отказаться от него. Я переключился на ADO.NET на несколько дней просто для того, чтобы что-то заработало, и был поражен тем, как много нужно было ADO, чтобы написать простой репозиторий. Это была головная боль, поэтому я наконец выбрал NHibernate.
Мой код DAL с NHibernate (2.0), вероятно, составляет 5% или менее от моей базы кода. Это включает в себя файлы сопоставления XML. Я имею в виду, что след DAL настолько мал, и с ним приятно работать. В прошлом у меня были проблемы с NHibernate 1.2 в распределенной среде, где мне нужно было работать с отсоединенными объектами, но NHibernate 2.0, похоже, решил эту проблему. Я знаю, что теперь я делаю DAL, пока не появится что-то лучшее.
Интересно, что у нас с коллегами был похожий разговор пару месяцев назад. Но наше внимание было сосредоточено не столько на том, сколько кода составлял наш DAL, сколько на том, что наше приложение было просто запросом данных / манипулированием. Мы подсчитали, что, вероятно, 90% нашего приложения было просто вопросом выбора правильного набора данных и предоставления пользователям возможности его редактировать.