Array
(
)

Transações com DataSet Tipado

André Andrade
   - 09 jun 2011

Estou fazendo um aplicação web que utiliza um data set como camada DAL e uma Classe que chama os metodos do Dataset como a minha camada BLL. E um software de controle de patrimonios! O que gostaria de fazer e o seguinte no Método que eu faço um Insert de um novo patrimonio eu gostaria tambem de Fazer um Insert em uma outra tabela na qual possui tambem um dataset tipado chamado historico na qual armazenara informações sobre o insert do Patrimonio. Gostaria de fazer um transaction para que caso ocorra um erro ao tentar inserir uma row do dataset historico ocorra um rollback nao fazendo o insert do patrimonio. Como posso fazer isso na camada BLL usando os métodos do data set?   Abaixo o codigo do método   #Código


[DataObjectMethod(DataObjectMethodType.Insert, true)]
public bool AddPatrimonio(string identidade, char tipo, string nome, string descricao, string nserie,
int? nf, decimal valor, int local, int situacao)
{
PatrimoniosDS.patrimoniosDataTable newPatrimonio = new PatrimoniosDS.patrimoniosDataTable();
PatrimoniosDS.patrimoniosRow rowPatrimonio = newPatrimonio.NewpatrimoniosRow();

if (PatrimoniosTableAdapter.GetPatrimonioByIdentidade(identidade).Count != 0)
{
throw new Exception("Já existe um patrimonio cadastrado com essa Identidade!", new ArgumentException());
}
rowPatrimonio.identidade = identidade;
rowPatrimonio.tipo = Convert.ToString(tipo);
rowPatrimonio.nome = nome;
rowPatrimonio.descricao = descricao;
rowPatrimonio.nserie = nserie;
if(nf == null && nf == 0 ) rowPatrimonio.SetnfNull(); else rowPatrimonio.nf = (int)nf;
rowPatrimonio.valor = valor;
rowPatrimonio.local = (short)local;
rowPatrimonio.situacao = (short)situacao;

newPatrimonio.AddpatrimoniosRow(rowPatrimonio);
//Aqui faço o insert do novo patrimonio
int rowsAffected = PatrimoniosTableAdapter.Update(newPatrimonio);
 
//gostaria de fazer a transaction aqui caso falhe a inserção do historico de um rollback neste update.
 
return rowsAffected == 1;
 
 
 
 

 
}