/ / BeginTransaction w EF [zamknięty] - c #, winforms, sql-server-2008, entity-framework-4

BeginTransaction w EF [zamknięty] - c #, winforms, sql-server-2008, entity-framework-4

Chcę użyć transakcji w EF. Ale nic o tym nie wiem.

zamień ten kod ADO na EF:

using System.Data.SqlClient;
private void button4_Click(object sender, EventArgs e)
{
string strConnection = @"Data Source = ARASH-PCARASH; Initial Catalog = SampleDB; User Id = sa; Password = 1;";
SqlConnection con = new SqlConnection(strConnection);
con.Open();
SqlCommand command1 = new SqlCommand("INSERT " + " INTO Acc_Group (SalMali,Code_Group,Name_Group)" + " VALUES(84,60,N"aaaa")", con);
SqlCommand command2 = new SqlCommand("INSERT " + " INTO Acc_Group (SalMali,Code_Group,Name_Group)" + " VALUES(84,80,N"ssss")", con);

SqlTransaction Transaction = con.BeginTransaction();
command1.Transaction = Transaction;
command2.Transaction = Transaction;
command1.ExecuteNonQuery();
command2.ExecuteNonQuery();
Transaction.Save("This Point");
Transaction.Rollback("This Point");
Transaction.Commit();
command1.Dispose();
command2.Dispose();
con.Close();

}

dzięki

Odpowiedzi:

2 dla odpowiedzi № 1

Możesz użyć klasy TransactionScope do transakcji użycia w EntityFramework:

 using (TransactionScope transaction = new TransactionScope())
{
}

Edytowałem swoją odpowiedź:

 ExamoleEntities context= new ExamoleEntities ();
bool success = false;
using (TransactionScope transaction = new TransactionScope())
{
try
{
//your Code Here
//
context.SaveChanges(...);
transaction.Complete();
success = true;
}
catch (Exception ex)
{
// Handle errors and rollback here and retry if needed.
// retry, otherwise stop the execution.
Console.WriteLine("An error occured. "
+ "The operation cannot be retried."
+ ex.Message);
}
if (success)
{

context.AcceptAllChanges();
}
else
{
Console.WriteLine("Error");
}
context.Dispose();
}
}