/ / Много изявления за актуализация в една транзакция в Entity Framework - asp.net-mvc-3, c # -4.0, entity-framework-4.1

Много изявления за актуализация в една транзакция в Entity Framework - asp.net-mvc-3, c # -4.0, entity-framework-4.1

Трябва да актуализирам повече от едно известие за актуализация, но всички трябва да работят върху автоматичност, т.е. да актуализират всички или никакви.

в интернет и в някои други SO въпроси имамоткрих как да използвам транзакцията, но не намерих нито един от тях да казва, че да актуализира множество отчети в една транзакция. Вижте по-долу три изявления за актуализации, които в момента не се изпълняват под транзакция

/// 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();
}

Отговори:

4 за отговор № 1

Можете да обновите актуализациите в 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 за отговор № 2

Както споменахме Дарин, използвайте обхват на сделката или мояпредпочитан е да имате вашите хранилища принадлежащи към интерфейса на IUnitOfWork. Актуализацията на обажданията просто определя състоянието да бъде променено и SaveChanges се случва ВЪНШНО от хранилището ви, за да се запазят всички промени наведнъж. Това трябва да се случи автоматично в рамките на една транзакция.

Така че се обаждате на всичките си актуализации, а след това на unitOfWork.SaveChanges, където персонализираната ви единица на работна класа съдържа препратка към контекста ви и изпълнява метод, дефиниран в IUnitOfWork, наречен Save ()


0 за отговор № 3

Основно трябва да го управлявате чрез TransactionScope Class и с това можете да настроите няколко актуализации на Модел и след това да използвате Transaction.Complete, за да запазите вашите неща в една транзакция.

Моля те, провери Актуализиране на няколко обекта в една транзакция в рамка на предприятието за повече информация.