2 Stimmen

Kann das SimpleRepository von SubSonic an einer Transaktion für zwei verschiedene Objekttypen teilnehmen?

Ich habe Sub Sonic 3's SimpleRepository erforscht und war ziemlich zufrieden damit, habe aber eine Frage zu Transaktionen. Ich bin mir bewusst, dass die Verwendung von Methoden wie "AddMany" und "DeleteMany" automatisch alle diese Operationen innerhalb einer einzigen Transaktion durchführen, aber ich frage mich, ob es möglich ist, das SimpleRepository zu zwingen, das Hinzufügen oder Aktualisieren von zwei verschiedenen Objekttypen innerhalb derselben Transaktion durchzuführen. Nehmen wir zum Beispiel an, dass ich in meiner Anwendung zwei verschiedene, aber verwandte Entitäten habe: einen Benutzer und ein Profil. Jeder Benutzer muss ein Profil haben, und jedes Profil gehört nur zu einem einzigen Benutzer. Wenn sich ein neuer Benutzer bei meiner Anwendung anmeldet, möchte ich, dass er die grundlegenden Benutzerinformationen (Anmeldedaten, Name, E-Mail) angibt, aber auch einige zusätzliche "Profil"-Informationen (über mich, Geschlecht, Postleitzahl usw.) Ich möchte das Hinzufügen des Benutzer- und des Profilobjekts in einer einzigen Transaktion durchführen können, aber da dies zwei verschiedene Aufrufe der Methode "Add" mit Parametern unterschiedlichen Typs erfordert, bin ich mir nicht sicher, wie das funktionieren soll.

2voto

Adam Cooper Punkte 7086

Sie können dies mit einer Transaktion wie folgt tun:

  using (TransactionScope transactionScope = new TransactionScope())
  {
    using (SharedDbConnectionScope connectionScope = new SharedDbConnectionScope())
    {
      // Add your user
      // Add your profile

      transactionScope.Complete();
    }
  }

1voto

jimi Punkte 89

Adam - ich denke, dass der obige Code korrekt ist, aber eigentlich ist er falsch herum, er sollte es sein:

  using (SharedDbConnectionScope connectionScope = new SharedDbConnectionScope())
  {
    using (TransactionScope transactionScope = new TransactionScope())
    {
      // Add your user
      // Add your profile

      transactionScope.Complete();
    }
  }

Prost jimi

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X