将TransactionScope与类型化数据集一起使用

时间:2009-06-26 21:46:25

标签: .net winforms transactions transactionscope strongly-typed-dataset

我有一个WinForm应用程序使用typed-dataset tabledapters查询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
        }
    }
}

1 个答案:

答案 0 :(得分:1)

因为您在TransactionScope反式范围之外创建了table1Adapter。