В одном проекте мы использовали 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% нашего приложения было всего лишь вопросом получения правильного подмножества данных и разрешения пользователям редактировать его.
Я думаю, сгенерированный код не в счет? Кроме того, приблизительное количество «бизнес-классов» или общий размер кода может быть интересно увидеть эффекты амортизации. –
О да. Сгенерированный код определенно определен. Хотя для производства не требуется почти столько времени, в какой-то момент будет обслуживание. – RKitson
надеюсь, что вы повторно генерируете, а не поддерживаете сгенерированный код ... –