Array
(
)

Transaction C#

Alan Miranda
   - 14 out 2011

Bom dia Pessoal,
Estou precisando fazer um Insert e um Update no mesmo metodo, alguém poderia me ajudar..
Vlw

Fabio Rosa
   - 14 out 2011

Olá Alan!

Você está usando que tipo de conexão com o banco? ADO .NET, Nhibernate, Entity Framework?

Att.

Alan Miranda
   - 14 out 2011

Fabio,

Estou utilizando ADO.NET.

Obrigado!

Ulisses Silva
   - 14 out 2011

Amigo,
Veja se este exemplo te atende:
http://devrafael.blogspot.com/2011/02/utilizando-transacoes-adonet.html

T+...

Alan Miranda
   - 20 out 2011

Muito obrigado!

Porem eu consigo fazer esses dois comandos direto no banco de dados ?

Vlw

Rodrigo Odasaki
   - 20 out 2011

Consegue sim, utilizando procedure.

Alan Miranda
   - 20 out 2011

Então fazer a transaction no SQL e manda a reposta para o C# certo ?

Teria algum exemplo no SQL

Obrigado

Evandro Lopes
   - 21 out 2011

Bom dia Alan, você deverá fazer algo muito proximo disso:
#Código

CREATE PROCEDURE SPSF_INCLUIR_ALTERAR
(
	@P_CODIGO				as int,
	@P_NOME			                as varchar(40)
)
AS  
BEGIN  
   
	SET NOCOUNT ON  
	SET TRANSACTION ISOLATION LEVEL READ COMMITTED  

	IF @P_CODIGO <> 0 OR @P_CODIGO <> NULL
	BEGIN
		INSERT.....
	ELSE
		UPDATE.....
	END

	SET NOCOUNT OFF
END


Espero ter ajudado.

Abraços.

Dyego Furletti
|
MVP
    21 out 2011

Trasanction Ado Net (Oracle)

OracleConnection conexao = new OracleConnection(StringConnection());
OracleCommand comando = new OracleCommand();
OracleTransaction transacao = null;

//Abre Conexão e Inicia Transação
try
{
if (conexao.State == ConnectionState.Closed)
conexao.Open();
comando.Connection = conexao;
}
catch (Exception ex)
{
comando.Parameters.Clear();
conexao.Close();
throw new Exception(Não foi possível estabelecer conexão.\nMotivo: + ex.Message);
}

//Exemplo utilização da Trasaction Oracle
try
{
transacao = conexao.BeginTransaction();
comando.Transaction = transacao;

StringBuilder ins = new StringBuilder();
ins.Append(INSERT INTO );
comando.CommandText = ins.ToString();
comando.ExecuteNonQuery();
transacao.Commit();
MessageBox.Show(Processo concluido com sucesso!!!);
}
catch (Exception ex)
{
if (transacao != null)
transacao.Rollback();
comando.Parameters.Clear();
conexao.Close();
throw new Exception(Processo abortado.\nMotivo: + ex.Message);
}
finally
{
if (conexao != null)
{
if (conexao.State == ConnectionState.Open)
{
conexao.Close(); //Fechando Conexão
}
}
}

Dyego Furletti
|
MVP
    21 out 2011

Transaction utilizando Entity Framework

/*Instanciar objeto da modelagem*/

ModelEntities Model = new ModelEntities(StringConnectionEntity); //Declaração do seu objeto da modelagem passando o string Entities
DbTransaction Transaction = null;

using (EntityConnection DbConnection = new EntityConnection(Model.Connection.ConnectionString))
{
try
{
if (DbConnection.State == ConnectionState.Closed)
{
DbConnection.Open(); //Abrindo Conexão
}

var CurrentContext = new ModelEntities(DbConnection); //Passando como parametro o estado da Conexão
Transaction = CurrentContext.Connection.BeginTransaction(); //Iniciando a Transação

//CurrentContext.SaveChanges(); //O objeto CurrentContext passa a ser o objeto que se comunica com sua modelagem
Transaction.Commit();
}
catch (Exception ex)
{
Transaction.Rollback();
}
finally
{
if (DbConnection != null)
{
if (DbConnection.State == ConnectionState.Open)
{
DbConnection.Close(); //Fechando Conexão
}
}
}
}