Is it considered good practice to start a transaction in the service/application layer, and then have objects in the domain model make DAO calls which participate in that transaction?
Domain object using DAO within a transaction
domain driven design;domain model;layers
I assume you mean something like .nets TransactionScope.Using(var t = new TransactionScope()){    DAL.Add(obj1) //dal automatically finds the transaction scope and enlists. Transaction created    DAL.Remove(obj2) // sql executes in transaction    t.Complete() //any db transactions are committed} While it is possible to use the transaction scope outside of your DAL and have everything work as expected, it relies on the underlying database connection library supporting TransactionScopes. Since the purpose of the DAL is to abstract that underlying implementation from the calling code; your calling code cant rely on the DAL respecting the transaction scope.Therefore I would say it is bad practice.