Transaction C#

.NET

14/10/2011

Bom dia Pessoal,

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

Vlw
Alan Miranda

Alan Miranda

Curtidas 0

Respostas

Fabio Rosa

Fabio Rosa

14/10/2011

Olá Alan!

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

Att.
GOSTEI 0
Alan Miranda

Alan Miranda

14/10/2011

Fabio,

Estou utilizando ADO.NET.

Obrigado!
GOSTEI 0
Ulisses Silva

Ulisses Silva

14/10/2011

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

T+...
GOSTEI 0
Alan Miranda

Alan Miranda

14/10/2011

Muito obrigado!

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

Vlw
GOSTEI 0
Rodrigo Odasaki

Rodrigo Odasaki

14/10/2011

Consegue sim, utilizando procedure.
GOSTEI 0
Alan Miranda

Alan Miranda

14/10/2011

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

Teria algum exemplo no SQL

Obrigado
GOSTEI 0
Evandro Lopes

Evandro Lopes

14/10/2011

Bom dia Alan, você deverá fazer algo muito proximo disso:
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.
GOSTEI 0
Dyego Furletti

Dyego Furletti

14/10/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
}
}
}
GOSTEI 0
Dyego Furletti

Dyego Furletti

14/10/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
}
}
}
}
GOSTEI 0
POSTAR