/ / Mnoho aktualizačných príkazov v jednej transakcii v rámci Entity Framework - asp.net-mvc-3, c # -4.0, entity-framework-4.1

Mnoho aktualizačných príkazov v jednej Transakcii v rámci Entity Framework - asp.net-mvc-3, c # -4.0, entity-framework-4.1

Potrebujem aktualizovať viac ako jednu aktualizáciu, ale všetci by mali pracovať na automicity, tj aktualizovať všetky alebo žiadne.

na internete av nejakej inej SO Otázky, ktoré mámzistil, ako používať Transakciu, ale ja som "nenašiel žiadny z nich hovoriť o aktualizácii mulitple výkazy v jednej transakcii. Pozrite nižšie tri výkazy o aktualizácii, ktoré v súčasnosti nie sú v prevádzke

/// this are my update calls.
var report = reportRepository.Update(reportModel);
var book = bookRepository.Update(bookModel);
var mobile = mobileRepository.Update(mobileModel);

// each Update method for all repository will looks like
public returnModel Update(someModel model)
{
// assign values from model to entity
Context.ObjectStateManager.ChangeObjectState(entity,System.Data.EntityState.Modified)
Context.SaveChanges();
}

odpovede:

4 pre odpoveď č. 1

Aktualizácie môžete aktualizovať v časti a TransactionScope:

using (TransactionScope transaction = new TransactionScope())
{
var report = reportRepository.Update(reportModel);
var book = bookRepository.Update(bookModel);
var mobile = mobileRepository.Update(mobileModel);
...
transaction.Complete();
}

1 pre odpoveď č. 2

Ako Darin spomenul používať rozsah transakcií alebo môjuprednostňovanou metódou je, aby vaše repozitáre patrili do rozhrania IUnitOfWork. Aktualizácia volania jednoducho nastaví stav na upravený a SaveChanges sa stane OUTSIDE vášho úložiska, aby sa všetky zmeny uložili naraz. Toto by sa malo uskutočniť automaticky v rámci jednej transakcie.

Takže zavoláte všetky svoje aktualizácie a potom unitOfWork.SaveChanges, kde vaša vlastná jednotka pracovnej triedy obsahuje odkaz na váš kontext a implementuje metódu definovanú v IUnitOfWork s názvom Save ()


0 pre odpoveď č. 3

V zásade to musíte spravovať cez TransactionScope Class a pomocou tohto môžete nastaviť viacnásobnú aktualizáciu modelu a potom použiť Transaction.Complete na uloženie vašich vecí v jednej transakcii.

Prosím skontroluj Aktualizácia viacerých objektov v jednej transakcii v rámci entity pre viac detailov.