Дозвуковая 3 транзакция - PullRequest
       8

Дозвуковая 3 транзакция

0 голосов
/ 02 декабря 2009

У меня настроен DTC, как указано на веб-сайте MS, для поддержки удаленных транзакций. У меня следующий код всегда дает мне ошибку.

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.Close();
 }

Однако, если я перемещу второй блок кода из блока судебного преследования, он работает просто отлично. Что я хочу сделать, это связать эти два блока кода в одну трассировку. Что может быть чтение? Спасибо,

1 Ответ

0 голосов
/ 03 декабря 2009

Вы не указываете, какую ошибку дает вам код, но единственное, что я вижу неправильно, это то, что вы не вызываете 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();
 }
...