Сейчас изучаю этот "паттерн", нашел одно из обсуждений где говориться что данный "паттерн" лучше не использовать.
Например
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 скрыт, непонятно что там происходит . но оно нам надо если все работает ? ( для части разработчиков это даже не минус, а плюс, не нужно городить свой велосипед. )
Есть что-то еще неудобное ?