1

型付きデータセット テーブルアダプターを使用して SqlCe データベースにクエリを実行する WinForm アプリケーションがあります。メイン フォーム アセンブリと、すべての db 操作を処理するデータベース アセンブリがあります。トランザクションで 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
        }
    }
}
4

1 に答える 1

1

table1Adapter を TransactionScope トランス スコープ外で作成したためです。

于 2010-02-11T11:34:06.987 に答える