Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Im Allgemeinen unterstützt die Regel-Engine keine Transaktionen. Sie können eine Datenbank jedoch transaktionsgesteuert aktualisieren, indem Sie das DataConnection-Objekt verwenden, wie in den folgenden Schritten gezeigt:
Erstellen Sie mithilfe eines Verbindungszeichenfolge ein SqlConnection-Objekt, und öffnen Sie die Verbindung.
SqlConnection connection = new SqlConnection("Initial Catalog=Northwind;Data Source=(local);Integrated Security=SSPI;"); connection.Open();
Erstellen Sie ein SqlTransaction-Objekt , indem Sie die BeginTransaction-Methode für das Verbindungsobjekt aufrufen, das Sie in Schritt 1 erstellt haben.
SqlTransaction transaction = connection.BeginTransaction();
Erstellen Sie ein DataConnection-Objekt mithilfe der Verbindungs- und Transaktionsobjekte, die Sie in den Schritten 1 und 2 erstellt haben.
DataConnection dc = new DataConnection(datasetName, tableName, connection, transaction);
Übergeben Sie das DataConnection-Objekt als Tatsache zusammen mit allen anderen Fakten, die Sie an die Richtlinie übergeben möchten, und führen Sie die Richtlinie aus.
//Passing a .NET object as a fact along with the data connection MyClass obj = new MyClass(); object[] facts = new object[2]; facts[0] = dc; facts[1] = obj; Policy pol = new Policy(policyName); policy.Execute(facts);
Rufen Sie die Update-Methode für das Datenverbindungsobjekt auf. Alle während der Ausführung der Richtlinie ausgeführten Aktualisierungen werden nur im Speicher ausgeführt. Sie müssen die Update-Methode für das Datenverbindungsobjekt aufrufen, um die Datenbank zu aktualisieren.
dc.Update();
Rufen Sie nun Commit oder Rollback für das Datenverbindungsobjekt basierend auf Ihrer eigenen Logik auf.
//Checking the value of PropertyA in .net object //to decide whether to commit or rollback if (obj.PropertyA == true) transaction.Commit(); else transaction.Rollback();
Schließen Sie die Verbindung, und geben Sie das Richtlinienobjekt frei.
sqlCon.Close(); policy.Dispose();
Dies ist der vollständige Code mit allen Schritten:
SqlConnection connection = new SqlConnection("Initial Catalog=Northwind;Data Source=(local);Integrated Security=SSPI;");
connection.Open();
SqlTransaction transaction = connection.BeginTransaction();
DataConnection dc = new DataConnection(datasetName, tableName, connection, transaction);
MyClass obj = new MyClass();
object[] facts = new object[2];
facts[0] = dc;
facts[1] = obj;
Policy pol = new Policy(policyName);
policy.Execute(facts);
dc.Update();
if (obj.PropertyA == true)
transaction.Commit();
else
transaction.Rollback();
sqlCon.Close();
policy.Dispose();
Kommentare
Sie können auch die OleDbConnection - und OleDbTransaction-Objekte verwenden, anstatt die SqlConnection - und SqlTransaction-Objekte zu verwenden, um Datenbankupdates auf transaktionale Weise durchzuführen.
Alle von der Richtlinie vorgenommenen Änderungen werden im Speicher vorgenommen. Sie müssen die Update-Methode für das DataConnection-Objekt aufrufen, um die Datenbank zu aktualisieren.
Sie können entweder einen Commit oder ein Rollback für die Transaktion ausführen, indem Sie die Commit - oder Rollback-Methode der DataConnection-Objekte aufrufen.