Вы не указываете, какую ошибку дает вам код, но единственное, что я вижу неправильно, это то, что вы не вызываете Complete на вашем TransactionScope. Попробуйте следующее:
using (TransactionScope ts = new TransactionScope())
{
Category c = new Category();
c.Name = "Cat1";
c.Save();
Product p = Product.SingleOrDefault(x=>x.ProductID==1);
p.Title = "new title";
p.Save();
ts.Complete();
}
На самом деле вам не нужно включать DTC, вы можете заключить этот код в транзакцию, используя SharedDbConnectionScope SubSonic. Попробуйте следующее:
using (TransactionScope ts = new TransactionScope())
using (SharedDbConnectionScope sharedConnectionScope = new SharedDbConnectionScope())
{
Category c = new Category();
c.Name = "Cat1";
c.Save();
Product p = Product.SingleOrDefault(x=>x.ProductID==1);
p.Title = "new title";
p.Save();
ts.Complete();
}