Использование TransactionScope с типизированным набором данных

У меня есть приложение WinForm, запрашивающее базу данных SqlCe с использованием таблиц с типизированным набором данных. У меня есть основная сборка формы и сборка базы данных, которая обрабатывает каждую операцию БД. У меня проблемы с обновлением с помощью tableadapter в транзакции, и я был бы признателен, если бы кто-нибудь мог дать мне какие-либо идеи, почему.

Метод Update() дает эту ошибку:

"The connection object can not be enlisted in transaction scope."

Вот мой код:

namespace Main
{
    public class MainForm
    {
        private MyDbAssembly.MyDbClass db;

        //instantiate and db fill methods omitted..

        private void DeleteStuff()
        {
            using (TransactionScope trans = new TransactionScope())
            {
                this.db.Delete(id);
                UpdateDb();

                trans.Complete();
            }
        }

        private void UpdateDb()
        {
            //bindingsource endedit & datagridview endedit methods omitted..
            this.db.Update();
        }
    }
}

namespace MyDbAssembly
{
    public class MyDbClass
    {
        private myTypedDataset myDataSet;
        private myTypedDataSetTableAdapter.MyTable1Adapter table1Adapter;

        //instantiate methods omitted..

        public void Delete(Guid id)
        {
            this.myDataSet.MyTable1.FindByID(id).Delete();  
        }

        public void Update()
        {
            this.table1Adapter.Update(myDataSet.MyTable); //<-- ERROR LINE
        }
    }
}

person dstr    schedule 26.06.2009    source источник
comment
Вы уже не спрашивали об этом? stackoverflow.com/questions/602421   -  person Marc Gravell    schedule 27.06.2009
comment
Нет, это не то же самое. Этот вопрос был о том, сработает ли это, этот вопрос об ошибке, которую я получаю.   -  person dstr    schedule 27.06.2009


Ответы (1)


Поскольку вы создали table1Adapter вне области TransactionScope.

person Fabrizio Accatino    schedule 11.02.2010