Здравствуйте, Walker, Вы писали:
W>Не совсем я понял идею... Уже существующие методы при любом раскладе будут работать только с одной command. Да и еще же надо параметры указать для каждой command... И чем это отличается от передачи commands как параметров в функцию? Ведь если я вызываю несколько разных методов Execute... то я скорее всего захочу для каждого иметь свои commands и parameters к ним, так что выставление commands отдельно для инстанса DbManager вряд ли даст много пользы. Что-то я не понял, можешь подробнее?
Проблема вот в чём. Например, мы хотим иметь метод возвращающий датасет и принимающий его в качестве параметра. Теперь мы хотим иметь возможность задавть тип команды либо опускать его и для этих двух вариантов ещё задавать парметры или опускать их. Итого 2 варианта передачи датасета и 4 для параметров. В результате нужно написать 8 перекрытий. Если это разделить на 2 метода, то писать нужно 6 методов. Но это для одной команды. А у нас их три. Теперь посчитай сколько у нас получается комбинаций.
Если же вынести задание команд в отдельные методы, то дальше комбинируй сам как хочешь.
using (DbManager db = new DbManager())
{
return db
.InsertCommand("INSERT INTO...", db.CreateParameters(entity))
.UpdateCommand(CommandType.StoredProcedure, "UpdateItem")
.DeleteSp("DeleteItem", db.Parameter("@ID"))
.UpdateDataSet();
}
Придётся конечно запоминать сформированные команды в DbManager, но это уже мелочи.
W>И кстати, я уже наваял наследника для выполнения апдейтов датасетов, но я это делал для версии 1.1 (изменения для класса DbManager минимальны), сейчас надо только слить для версии 1.2. Сегодня-завтра сделаю — посмотришь мой подход.
Давай.