If your business rule is updating records in multiple database tables then consider using transactions to ensure atomicity of data operations.
Business objects generated by premium projects are not providing an explicit support for transactions and are relying on transaction plumbing available in ADO.NET. Learn more about System.Transaction.TransactionScope to better understand transaction control options available to developers.
Here is a quick example.
Generate a Data Aquarium project from Northwind database and add System.Transactions.dll reference to your project.
Enter the following code in your web form code-behind or modify the code appropriately to be used in your business rules.
C#:
using System; using System.Collections.Generic; using System.Linq; using System.Web; using MyCompany.Data.Objects; using System.Transactions; public partial class Demo : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { using (TransactionScope trn = new TransactionScope()) { // create a new shipper Shippers s = new Shippers(); s.CompanyName = "Code OnTime"; s.Phone = "877-467-6340"; if (s.Insert() != 1) throw new Exception("Failed to create a shipper"); trn.Complete(); } } }
VB:
Imports System.Collections.Generic Imports MyCompany.Data.Objects Imports System.Transactions Partial Class Demo Inherits System.Web.UI.Page Protected Sub Page_Load(ByVal sender As Object, _ ByVal e As System.EventArgs) Handles Me.Load ' create a new shipper Using trn As TransactionScope = New System.Transactions.TransactionScope() Dim s As Shippers = New Shippers() s.CompanyName = "Code OnTime" s.Phone = "877-467-6340" If s.Insert() <> 1 Then Throw New Exception("Failed to create a shipper") End If trn.Complete() End Using End Sub End Class
Method Complete will commit all changes.
If an exception is raised then the entire set of changes performed in the scope of transaction prior to the error will be canceled.