Типизированный DataSet, DataAdapter
От: Аноним  
Дата: 19.06.10 08:07
Оценка:
Сейчас изучаю этот "паттерн", нашел одно из обсуждений где говориться что данный "паттерн" лучше не использовать.
Например http://www.rsdn.ru/forum/dotnet/3737213.flat.aspx
Автор: Fortnum
Дата: 16.03.10


Хотелось бы получить более детальную агрументацию по этому поводу чем просто ответ "Нет".


Например получается достаточно удобно

в студии Add New Item..., выбираем DataSet , имя строки соединения из app.config, далее Add Adapter, выбираем в поле Select нужную нам хранимку, нажимаем Finish.


Далее в коде пишем

...

using ( var orders = new MyOrdersAdapter() )
{
   var myorders = orders.GetData( param1, param2, paramN );
}


или тоже самое с типами


...

using ( MyOrdersAdapter orders = new MyOrdersAdapter() )
{
   OrdersTable myorders = orders.GetData( param1, param2, paramN );
}



Чем это удобно :

1. Нам не нужно создавать вспомогательный класс Orders и OrdersList для отображения сущностей заказов, такой класс генеритрся автоматически и будет называться OrdersTableRow, а коллекция OrdersTable, причем типизированные

2. Не нужно заботится о передаче данных через параметры ( в частности для исключения sql injection ) это делается уже по умолчанию, параметры передаются в метод GetData, не нужно также забодится о приведении типов в соответствие к БД, это также делается автоматом, в GetData вы видите родные для языка типы которые нужно передать и всё.

3. Не нужно писать свою обертку для абстрагирования от DAL , она создается автоматически — метод MyOrdersAdapter.GetData



Чем не удобно :

1. Слой DAL скрыт, непонятно что там происходит . но оно нам надо если все работает ? ( для части разработчиков это даже не минус, а плюс, не нужно городить свой велосипед. )

Есть что-то еще неудобное ?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.