Как отменить SaveChanges - PullRequest
       21

Как отменить SaveChanges

1 голос
/ 13 июля 2011

Я делаю первое исключение SaveChanges и вылетает (UpdateException). И я делаю второй SaveChanges и againe fliyng первый erorr. Что с этим делать

bool isUpdate = false;
var resource = new Resource() { url = tbUrl.Text };
//block1
try
{
    context.Resource.AddObject(resource);
    context.SaveChanges();
    isUpdate = true;
}
catch (UpdateException ex)
{

}

//block2
if (!isUpdate)
{
    resource = (from res in context.Resource where res.url == tbUrl.Text select res).First();
    context.NameToResourcer.AddObject(new NameToResourcer()
                    {
                        id_resource = resource.id,
                        name = tag
                    });
    context.SaveChanges();//error!
}

1 Ответ

2 голосов
/ 13 июля 2011

Ваши звонки на SaveChanges должны быть включены в транзакцию.Обычно используется TransactionScope.Затем вы можете откатить транзакцию в случае сбоя одного из вызовов SaveChanges.


Редактировать:

Некоторые примеры см. На этих двух страницах MSDN:

Класс System.Transactions.TransactionScope

Как: управлять транзакциями в Entity Framework

...