/// <summary> /// Prepare a command for communicate with database. /// </summary> /// <param name="sql"></param> /// <param name="type"></param> /// <param name="parameters"></param> /// <returns></returns> protected virtual IDbCommand PrepareCommand(string sql, CommandType type, IDbDataParameter[] parameters) { IDbCommand command = _factory.CreateCommand(); command.Connection = this._connection; command.CommandText = sql; command.CommandType = type; var pas = command.Parameters; foreach (var p in parameters) { pas.Add(p); } var tran = LocalTransactionBlock.GetCurrentTransaction(this._connectionSchema.Database); if (tran != null && tran.Connection == this._connection) { command.Transaction = tran; } //if (this._transaction != null) //{ // command.Transaction = this._transaction; //} Logger.LogDbAccessed(sql, parameters, this._connectionSchema); return(command); }