Как создать класс, который работает с TransactionScope?

Просто интересно, хочу ли я создать класс, который что-то делает, и я хочу, чтобы его можно было использовать в TransactionScope, что мне нужно реализовать?

То есть: Мой класс должен знать, что он находится в транзакции, но как он получит уведомление о фиксации или откате? А при откате, как мне на самом деле откатить?

Я предполагаю, что у моего класса будут такие методы, как «Добавить», «Обновить» и «Удалить», которые изменяют только временный список изменений, и метод «Чтение», которому необходимо определить, находится ли он в транзакции, и вернуть соответственно измененные или неизмененные данные, но тогда мне нужен метод Commit / Rollback, который каким-то образом вызывается?

Могу ли я подписаться на событие Transaction.TransactionCompleted? Если да, как мне избежать множественных подписок на одну и ту же транзакцию?

Я заметил, что у транзакций нет идентификаторов, есть ли способ управлять или манипулировать несколькими параллельными транзакциями или вложенными транзакциями?

Документация MSDN для System.Transactions содержит много контента, но, похоже, ориентирована на потребителей, а не на разработчиков, поэтому Интересно, есть ли у кого-нибудь хороший источник (в Интернете или в книге) о том, как служба будет обеспечивать поддержку транзакций?

Предположим, что у моего класса нет базового хранилища, которое уже поддерживает транзакции и может просто «пропустите». Предположим, мой класс выглядит следующим образом:

public class MyClass {
    private List _businessData;

    public void Create(Myobject data) { ... }
    public MyObject Read(string query) { ... }
    public void Update(Myobject data) { ... }
    public void Delete(Myobject data) { ... }
}

29
задан Michael Stum 10 March 2011 в 20:59
поделиться