Да, есть способ. Вы должны вызвать перегруженный SaveChanges
, который не будет принимать изменения после автоматического сохранения, и вместо этого вы будете отвечать за вызов AcceptAllChanges
. В этом сценарии объекты будут по-прежнему в состоянии «Добавлено» после вызова SaveChanges
(но только до тех пор, пока вы не вызовете AcceptAllChanges
). Общий код должен выглядеть так:
using (var scope = new TransactionScope(...))
{
context.SaveChanges(SaveOptions.DetectChangesBeforeSave);
// Run your code here
context.AcceptAllChanges();
scope.Complete();
}
Область транзакции не обязательна - это всего лишь пример подхода, если вы публикуете код вставки, который должен выполняться в транзакции с вставкой.
Вы также можете заключить этот код в переопределенный SaveChanges
, чтобы иметь его в централизованном месте.