Как исп. TableAdapter-ы с ХП возвращ. разные наборы полей
От: SlavaTT  
Дата: 02.08.06 14:13
Оценка:
Прочел красивую статью буржуя Scot-a Mitchela про то как делать правильно доступ к данным через типизир. DataSet-ы но не все оказалось так красиво на практике )

Есть БД доступ к которой делается через хранимые процедуры.
Процедуры в основном используют ветвление внутри себя в зависимости от параметров или просто сходные по типу процедуру возвращают различные наборы полей из связанных таблиц(ы) .

Например: sp_GetContact — вовзращает список контактов из таблицы Contacts при этом выбираются поля нужные только для отображения этого списка на ASP странице, есть еще sp_GetContactPKId, она возвращает один контакт и все его поля. По идее хорошо было бы создать ContactsTableAdapter который будет возвращать один бизнес обьект ContactDataTable и в нем указать эти две .ранимые процедуры, но XML схема получается разная. А создавать отдельные TableAdapter-ы типа ContactListTableADapter и ContactDisplayTableAdapter для каждого набора полей не хочется.
Получается надо изменять процедуру(ы) так что-бы они возвращали один набор полей ?
БД не нормализована и например в таблице Contacts — 60+ полей и если их возвращать всегда все — это может сказаться на производительности ?
Можно вроде создать одну суммарную схему на 2 процедуры, но тогда часть свойств ContactRow будут не использоваться если вызываешь одну из процедур и еще появляются проблемы с contraint-ами в DataSet — вообщем тоже не лучший вариант.
Как быть ?

В DataSet еще есть возможность определять связи между таблицами но по ней мало инф.


Спасибо,

Слава
Re: Как исп. TableAdapter-ы с ХП возвращ. разные наборы поле
От: noetic Украина Систематизация автоматизации
Дата: 02.08.06 14:58
Оценка: 1 (1)
Здравствуйте, SlavaTT, Вы писали:

STT>Как быть ?

STT>Слава

Отказаться от типизированных датасетов в пользу нетипизированных...
Потому как типизированные изначально расчитаны на заранее известную структуру данных.

Или выделить из одной супер-процедуры несколько мелких, которые были бы способны возвращать данные известной структуры.

В любом случае, это не проблема датасетов, а проблема Вашей архитектуры, которая делает их исользовани мягко говоря невозможным.
Re[2]: Как исп. TableAdapter-ы с ХП возвращ. разные наборы п
От: SlavaTT  
Дата: 02.08.06 18:39
Оценка:
Здравствуйте, noetic, Вы писали:

N>Здравствуйте, SlavaTT, Вы писали:


STT>>Как быть ?

STT>>Слава

N>Отказаться от типизированных датасетов в пользу нетипизированных...

N>Потому как типизированные изначально расчитаны на заранее известную структуру данных.

N>Или выделить из одной супер-процедуры несколько мелких, которые были бы способны возвращать данные известной структуры.


N>В любом случае, это не проблема датасетов, а проблема Вашей архитектуры, которая делает их исользовани мягко говоря невозможным.


To Moderator: собирасля вопрос отправить в форум по .NET, но забыл, если не возражений задам один вопрос еще.

Согласен с Вашим советом!

А все-же вопрос не до конца ясен: как поступают guru в моем случае.
Тоесть возвращают только нужные поля из таблицы Contacts и делают несколько TableAdapter-ов (или custom business objects) или все поля сразу и один TableAdapter? Где почитать на эту тему ?
В принципе есть техника возвращать один обьект (все поля) из БД через исх параметры ХП и так даже быстрее, но как потом подкл их к ObjectDataSource и тд... и 64 исх. параметра тоже не очень

Слава
Re: Как исп. TableAdapter-ы с ХП возвращ. разные наборы поле
От: IB Австрия http://rsdn.ru
Дата: 02.08.06 18:58
Оценка: +1
Здравствуйте, SlavaTT, Вы писали:

STT>Как быть ?

Забить на датасеты и использовать нормальные объекты. Привести в порядок БД.
... [RSDN@Home 1.2.0 alpha rev. 619]
Мы уже победили, просто это еще не так заметно...
Re: Как исп. TableAdapter-ы с ХП возвращ. разные наборы поле
От: Andre Украина  
Дата: 03.08.06 06:37
Оценка:
Здравствуйте, SlavaTT, Вы писали:

STT>Например: sp_GetContact — вовзращает список контактов из таблицы Contacts при этом выбираются поля нужные только для отображения этого списка на ASP странице, есть еще sp_GetContactPKId, она возвращает один контакт и все его поля.


И это... Не именуй хранимки с префиксом sp_

5.5.3 Never prefix your stored procedures with sp_, unless you are storing the procedure in the master database. If you call a stored procedure prefixed with sp_, SQL Server always looks for this procedure in the master database. Only after checking in the master database (if not found) it searches the current database.


Development rules and regulations (c) IT

... << RSDN@Home 1.2.0 alpha rev. 655>>
Я бы изменил мир — но Бог не даёт исходников...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.