Как выполнить откат в Entity Framework 5? - PullRequest
0 голосов
/ 25 мая 2018

Как выполнить откат в Entity Framework 5, .Net Framework 4?

Нужно ли вызывать db.SaveChanges(); при //commit или достаточно db.usp_UpdateRoleUser? 1006 *

Какой коддолжно быть под //rollback?

public static bool UpdateRoleUser(int component_type, string oldRole, string oldUser, string oldAuth_value, string newRole, string newUser, string newAuth_value)
{
    using (var db = new VMIEntities())
    {
        int recordAffected = db.usp_UpdateRoleUser(newRole, newUser, newAuth_value, oldRole, oldUser, oldAuth_value, component_type);

        if (recordAffected == 1)
        {
            //commit
            return true;
        }
        else
        {
            //rollback
            return false;
        }
    }
}

1 Ответ

0 голосов
/ 25 мая 2018

Я делаю тот же поиск в интернете и нахожу этот ответ. Думаю, вы вам поможете. Я делаю копию этой ссылки: stackoverflow.com / a / 1070134/585968

public static bool UpdateRoleUser(int component_type, string oldRole, string oldUser, string oldAuth_value, string newRole, string newUser, string newAuth_value)
{
    bool saved = false;
    using (var transaction = new System.Transactions.TransactionScope())
    {
        try
        {
            var db = new VMIEntities();
            db.usp_UpdateRoleUser(newRole, newUser, newAuth_value, oldRole, oldUser, oldAuth_value, component_type);

            context.SaveChanges();
            saved = true;
        }
        catch(OptimisticConcurrencyException e)
        {
            //Handle the exception
            context.SaveChanges();
        }
        finally
        {
            if(saved)
            {
                transaction.Complete();
                context.AcceptAllChanges();
            }
        }
    }
}
...