I am developing application in N-Tier Architecture. as we all know that we need to implement transactions while insert/update/delete operation. please tell me how to use transaction in c#.net in N-Tier architecture. my architecture is like this Applicationform->middle_Layre->Factory->DataAccessLayre->StoredProcedure->Table in application form i create object of middleLayer and pass data in Insert/update/delete function of middle layer. i am creating object of sqlcommand in factoryclass and fill the data which i gets from middle layer and pass that object os sqlcommand to DAL.
The general pattern that is followed nowadays is:
Database <--> DAL <--> BLL <--> Controller <--> View Model <--> UI
Where
DAL == Data Access Layer (aka ORM, Object-Relational mapper)
BLL == Business Logic Layer
In this model, the transaction takes place in the BLL, where a "unit of work" is arranged. Typically, this happens by requesting data from the DAL, performing work on it, and saving changes. The DAL will generally wrap a transaction around your unit of work.
The Database, DAL, and BLL collectively form what is known as the Model in MVC (Model-view-controller) architecture. All business logic and data manipulation takes place in the Model. The controller acts as a go-between between the model and the View Model/UI, which collectively form the view.
In your case, the transaction would probably take place in your "middle layer," since that's the most likely place for your "units of work."
As long as your code is running on the same machine, without any WCF or Web Service calls between the layers, you could use TransactionScope.
http://msdn.microsoft.com/en-us/library/system.transactions.transactionscope.aspx
Just place the calls that you want to occur with a transaction, inside the transaction scope.
Here a good link that providing good details about maintaing Transaction in LINQ to SQL
http://www.a2zmenu.com/LINQ/Maintain%20Transaction%20in%20LINQ%20to%20SQL.aspx