Прошу прощения, может я не так чего делаю, но похоже, что такая конструкция
using (DbManager db = new DbManager())
{
db
.SetInsertCommand("INSERT statement")
.SetUpdateCommand("UPDATE statement")
.SetDeleteCommand("DELETE statement")
.Update(dataSet);
}
не работает

...
Я так думаю по следующей причине:
Методы
SetInsertCommand(), SetUpdateCommand(), SetDeleteCommand()
Вызывают следующую цепочку методов:
private IDbCommand PrepareCommand(
CommandAction commandAction,
CommandType commandType,
string commandText,
IDbDataParameter[] commandParameters)
{
try
{
IDbCommand command = GetCommand(commandType, commandText);
.............
private IDbCommand GetCommand(CommandType commandType, string sql)
{
IDbCommand command = Command;
.............
public IDbCommand Command
{
[System.Diagnostics.DebuggerStepThrough]
get { return SelectCommand; }
.............
public IDbCommand SelectCommand
{
[System.Diagnostics.DebuggerStepThrough]
get { return _selectCommand = InitCommand(_selectCommand); }
.............
private IDbCommand InitCommand(IDbCommand command)
{
try
{
IDbCommand cmd = command;
if (cmd == null)
{
// Create a command object.
//
cmd = Connection.CreateCommand();
Так вот, условие if (cmd == null) срабатывает ОДИН раз (вместо трех для каждой команды).
В результате _selectCommand, _insertCommand, _updateCommand и _deleteCommand смотрят на один и тот же объект.
Проблема решилась обнулением _selectCommand:
private IDbCommand GetCommand(CommandType commandType, string sql)
{
_selectCommand = null;
IDbCommand command = Command;