![]() |
|
Модераторы: gambit |
![]()
|
|
| kulibin |
|
||||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 229 Регистрация: 9.5.2005 Где: Украина, Запорожь е Репутация: 1 Всего: 3 |
Вот нашол оч интересную технику:
http://sourceforge.net/projects/csharpdatatier/ Генерит классы для всех таблиц в бд и хранимки для инсерта/апдейта/делейта и т.п. Токо вся работа с бд строится на датаридерах, коммандах и массивах типа этих классов сгенерированных для таблиц. Может для асп это в таком виде и нормально - но под винформз что-то как-то не очень получается 1. Думаю дататейбл и датароу гораздо удобнее чем массив объектов и объект соответствующий записи в таблице бд. Как такой массив прикрутить к датагридвью? Не будет наверное сортировки и точно не будет фильтрации 2. Там есть какая-то функция для получения датасета - но как её пользовать шото я не понял. Ну и вообще допустим если использовать всю эту музыку в куче с дататейбл и датасетом - тоже я совсем не понял как это сделать. Руками извлекать данные из датароу и помещать в объект сгенерированый? Чёто не оч удобно как-то Ну и вообще просто вот смотрю я эту технику - вижу что очень она интересная - но я что-то не понимаю как её пользовать. Пытался примеры использования искать - ничего не нашол Ну и ещё: оно то в принципе в исходниках - т.е. можно его и подправить. Токо не очень я сам понимаю как оно должно работать то. Я шарп токо начинаю учить. Сделал пару програмок мелких на шарпе+склсервер 2005 экспрес. Но на мелких то программках такие навороты может и вообще лишние - но вот на более крупных проектах думаю это просто необходимо. Вот как должен выглядеть класс для работы с таблицей БД? Эта техника генерит классы двух видов: 1.
и 2:
Чтоли в какой-то из них ещё дататейбл засунуть? Например в первый? Может есть у кого-то пример класса для работы с таблицей бд по типу этих? Чтобы под винформз легко было с ним работать: отображать данные в датагридвью, на форме для редактирования отдельной записи. Или может и с этим нормально - токо я не понимаю как? Просветите пожалуйста кто так делал. Я вот как бы понял что есть необходимость в объектно-ориентированном подходе при работе с бд от 10-15 таблиц - но как это реализовать - что-то туго соображаю. Или может кто-то знает наподобие технику - токо чтобы с ней под винформз нормально было работать? Буду очень благодарен за любую информацию на эту тему. Это сообщение отредактировал(а) kulibin - 29.6.2006, 23:10 |
||||
|
|||||
| mr.DUDA |
|
|||
|
3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 8 Всего: 232 |
Это называется O/R Mapping (можно поискать в гугле, или на том же codeproject, RSDN и т.д.)
З.Ы. обычная реализация такого подхода предполагает, что работа идёт с объектами а не DataTable/DataRow. -------------------- ![]() |
|||
|
||||
| kulibin |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 229 Регистрация: 9.5.2005 Где: Украина, Запорожь е Репутация: 1 Всего: 3 |
а как в случае использования объектов вместо дататейбл быть с привязкой данных к датагридвью и сортировками и фильтрацией? Как с датасетом - не использовать его вообще? Связи в нём нежду таблицами - тоже никак?
|
|||
|
||||
| arilou |
|
|||
![]() Великий МунаБудвин ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2646 Регистрация: 15.7.2004 Где: город-герой Минск Репутация: 4 Всего: 61 |
kulibin, у нас в компании кодогенерация сделана на основе CodeSmith. Техника похожа, но проблемы нет - классы, занимающиеся данными, содержат методы для трансляции из-в DataRow/DataTable.
|
|||
|
||||
| mr.DUDA |
|
|||
|
3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 8 Всего: 232 |
На одной конторе используют датасеты в качестве транспорта между сервером и клиентом (веб-сервисы, возвращающие и принимающие датасет), что давало возможность на сервере работать только с объектами, а клиенту отдавать/принимать датасеты.
-------------------- ![]() |
|||
|
||||
| kulibin |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 229 Регистрация: 9.5.2005 Где: Украина, Запорожь е Репутация: 1 Всего: 3 |
примерчик бы классов сгенерированных...а? Там исходники есть - я бы сам подшаманил чего надо. Этот же CodeSmith наверное платный? Это сообщение отредактировал(а) kulibin - 30.6.2006, 14:15 |
|||
|
||||
| kulibin |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 229 Регистрация: 9.5.2005 Где: Украина, Запорожь е Репутация: 1 Всего: 3 |
а мне вообще это под винформз надо - я никуда ничего передавать/принимать не буду. Меня интересуют токо уменьшение рутинной работы по написанию параметров, хранимок и т.п. - и очень интересна возможность обращения к столбцам таблицы как к свойствам. Ну допустим tblMyTable.FirstFild - как-то так. Я вот ещё нарыл одну штуку очень похожую на то, что мне нужно: www.mygenerationsoftware.com Генерация классов и хранимок по шаблонам - для любых бд. Там есть много готовых шаблонов и возможность свои создавать на бейсикоподобном языке. Очень интересно - но громоздко как-то и сложно. Мне этого всего не нужно - токо отвлекает и запутывает. А свои шаблоны писать - так мне проще тот генератор с исходниками на шарпе подправить под себя. Тут токо одно узкое место - не очень пока себе представляю как классы эти должны выглядеть. Вторую неделю наверное мысли вокруг этого вертятся - но что-то вдохновение не приходит Дайте плз у кого есть образец классаов для работы с бд для винформз (не с целью пересылки этих классов по серверам - а просто для упрощения работы с объектами адо - датасетами, таблицами, представлениями таблиц и т.п.) Ну и вообще за любые мысли на тему применения ооп при работе с бд буду очень благодарен. |
|||
|
||||
| mr.DUDA |
|
|||
|
3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 8 Всего: 232 |
kulibin, можно попробовать в сторону LINQ копнуть, правда не уверен что там что-либо про датасеты есть...
-------------------- ![]() |
|||
|
||||
| arilou |
|
|||
![]() Великий МунаБудвин ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2646 Регистрация: 15.7.2004 Где: город-герой Минск Репутация: 4 Всего: 61 |
kulibin, класс, работающий с данными (для таблицы): (первая половина)
|
|||
|
||||
| arilou |
|
|||
![]() Великий МунаБудвин ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2646 Регистрация: 15.7.2004 Где: город-герой Минск Репутация: 4 Всего: 61 |
Вторая половина:
Добавлено @ 17:04 Это автосгенеренный код, поэтому там есть куча дублированного кода. |
|||
|
||||
| kulibin |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 229 Регистрация: 9.5.2005 Где: Украина, Запорожь е Репутация: 1 Всего: 3 |
я копал немного и в эту сторону. мало что понял. понял что там наверное все операции с дататейблами и т.п. подменяются объектами. честно говоря не знаю - наверное это больше под веб пойдёт. и уж точно не в восторге от всяких потуг заменить скл для запросов - это точно тормоза будут. Хотя не знаю - оно как-то туговато сама концепция в голове укладывается. Уж и не знаю. Думаю может сделать класс-наследником от дататейбл абстрактный и к нему прикрутить сразу адаптер, комманды и т.п. - а его потомков уже прикручивать к конкретной таблице в бд - со свойствами для названиев столбцов и/или чтобы из дефаултвью значения уже брались текущей записи. Ну и там уже или тот опенсючный генератор перекраивать - или шаблоны свои рисовать. Как-то так вобщем нужно. А самое пока узкое место - это понять как классы то эти строить. Как я понял в результате долгих поисков готовое таке я врядли найду - так что токо или переделывать - или по шаблонам. |
|||
|
||||
| kulibin |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 229 Регистрация: 9.5.2005 Где: Украина, Запорожь е Репутация: 1 Всего: 3 |
arilou, интересный код. сидю перевариваю. пока не очень понял - но вроде похоже на то, что я хотел - может и полностью - но похоже. спасибо.
|
|||
|
||||
| kulibin |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 229 Регистрация: 9.5.2005 Где: Украина, Запорожь е Репутация: 1 Всего: 3 |
arilou, или я чего-то не понял - или мне код этот не очень нравится. даже затрудняюсь сказать чем не нравится. Что-то не могу понять преимуществ особенных которые он может дать.
Блин - вариантов не меряно - а выбрать очень трудно. Наверное легче и быстрее своё что-то слепить. Пол дня сидю медитирую над вопросом что бы это могло быть |
|||
|
||||
| mr.DUDA |
|
|||
|
3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 8 Всего: 232 |
Тем, что автогенерируется по описанию -------------------- ![]() |
|||
|
||||
| kulibin |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 229 Регистрация: 9.5.2005 Где: Украина, Запорожь е Репутация: 1 Всего: 3 |
Не оч понял - "тем, что генерируется" или "по описанию"? Тем, что автогенерируется наоборот нравится. По поводу описания - это типа как nhibernate? ну вообщето думаю наврядли - наверное там прога-генератор сама бд анализирует. Я задолбался просто делать постоянно одно и то же по нескольку раз: сначала в бд поля описывать - а потом то же самое в параметрах коммандов писать. Ну и много других операций рутинных. Автогенерация конечно лишает гибкости и местами запутывает - но это дело очень нужное и надо его осваивать. Токо вот насчёт гибкости - думаю чтобы она сильно не страдала надо не очень наворачивать с генерацией. Почему меня и настораживают сильно уж наляпистые результаты генерации. Буду своё что-то думать. Вот взялся осваивать написание шаблонов под MyGeneration. Прикольная штука. Оч интересно - жалко нет возможности нормально на это дело налечь. Буду потихоньку вечерами учиться. И по ходу медитировать над тем, как же всётаки должен выглядеть результат генерации. Если у когото есть не очень наляпаные образцы классов для работы с бд использующих дататейбл и адаптер - буду очень благодарен. |
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, stab, mr.DUDA, Exception. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Базы данных под .NET | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |