| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Базы данных под .NET > Правильный подход |
| Автор: v00d00 28.10.2010, 13:24 |
| Я новичок в сфере серьезной разработки бизнес приложений. Сейчас нахожусь на таком этапе своего развития, когда не хватает опыта для самостоятельного принятия решений, но шаблонный подход и боязнь написания очередного велосипеда не дают быстро и уверенно писать эффективный код. Поделитесь своим опытом эффективной организации доступа к данным из РБД, в приложениях на .NET Framework. Существует огромное множество различных библиотек, которые позволяют завернуть кортежи в объекты, помимо встроенного генератора в вижуал студии. Совсем недавно узнал о существовании Microsoft Enterprise Libriairy 5.0, про шаблон ActiveRecord, про Data Domain Development и сейчас нахожусь в состоянии не способности принять решение... Посмотрел как реализован доступ к базе в GOF Patterns in Action 3.5 - тот еще велосипед. Какие библиотеки и методики используются при разработке современных бизнесс приложений у вас на практике? Как вы работаете с БД? Можно ли использовать классы которые генерирует студия для работы с другой базой? Как эффективно использовать автоматически сгенерированные датасеты? Используете ли вы синглтон с открытым и заполненным датасетом (аля делфи стайл)? P.S. У меня давно созрел этот вопрос, все руки не доходили его запостить, на самом деле буду рад любому совету который имеет отношение к разработке доступа к БД....... |
| Автор: CYBERDREAM 28.10.2010, 15:00 |
| Приветствую. Как вариант можешь глянуть в сторону http://ru.wikipedia.org/wiki/NHibernate |
| Автор: v00d00 28.10.2010, 15:18 |
| Решений много, и если я правильно понял, то все ORM системы позволяют менять СУБД изменением конфига. В чем профит тогда от использования EntLib.DataAccess. Хотя... Там же тоже есть возможность спроецировать кортеж в объект, причем довольно гибкая, если я правильно помню, через юнити там можно очень красиво это все завернуть в свои классы, хотя пугали необходимостью написания своих мапперов для баз не поддерживающих чето-чето( забыл лол). Если есть минутка, опишите процесс организации доступа к БД который используете вы CYBERDREAM при производстве реальных проектов, бывали ли ситуации, когда приходится прикручивать свои костыли. Как обстоят дела с валидацией на стороне клиента в NHibernate? |
| Автор: CYBERDREAM 28.10.2010, 15:24 |
| Ответить не смогу сейчас, т.к. практического опыта нет. Вот со след. недели переводят в др. отдел, там и буду познавать все вкусности и не вкуснисти хибернэйт |
| Автор: v00d00 29.10.2010, 16:55 |
| Как-то тихо тут. Тогда я расскажу как сделал я. Есть несколько проектов в солюшене, которые работают с базой данных, для каждого проекта создал датасет. На форме-клиенте создается экземпляр датасета и набор тейбл адаптеров, которые при открытии формы загружают данные в таблицы датасета. Со временем датасет начинает разбухать, приходится делить его на несколько частей и тд. и тп. На формах соответственно растет кол-во адаптеров и проект начинает вонять. Что я сделал не так? Прочел цикл статей Idsa по ORM. Все довольно симпатично выглядит. А каково применение этих шаблонов из Entity Framework на практике? |
| Автор: jonie 30.10.2010, 21:41 |
| ORM не панацея... маппинг зачастую не упрощает жизнь. Например поддержка актуальной информации в кеше (в вашем случае в датасете) уже большая проблема (а в случае длинных транзакций вообще беда)... Разбейте ваше решение на проекты: p.data - POCO \ DTO для ваших данных p.data.db - собственно тут используйте всякие вкусности вроде ORM-ов, вкупе с автомаппером\emitMapper под маппинг p.data.config - для конфигурации (просто для удобства). тогда вы не думаю что запутаетесь.... Сейчас майкрофот активно заналась перетягиванием людей на EF-ок, говоря нам вкусные вещи вроде "code first".. я лично сторонник этого метода, но пока не заметил сильно удобных вещей в конкретно этом направлении... может и допилят еще.. |