1

MySQLテーブルの既存のデータに接続して変更しようとしています。読み取りは正常に機能しますが、変更を保存しようとすると、次のエラーが発生します。

プロバイダー接続でトランザクションを開始しているときにエラーが発生しました。詳細については、内部例外を参照してください。内部例外メッセージ:ネストされたトランザクションはサポートされていません。

MySQL ConnectorNet6.4.3の使用

答え

私の場合に役立つ答えを見つけました。以下のコードをデータソースコードに追加します

using System.Transactions;

namespace LightSwitchApplication
{
    public partial class <ChangeThisToYourClassName>
    {
        private TransactionScope tx;

        partial void SaveChanges_Executed()
        {
            tx.Complete();
        }

        partial void SaveChanges_Executing()
        {
            tx = new TransactionScope(TransactionScopeOption.Required, 
                  new TransactionOptions { 
                      IsolationLevel = System.Transactions.IsolationLevel.ReadCommitted
                  });
        } 
    }
}
4

1 に答える 1

0

ホットフィックスが機能することを確認できます。mysql connector.net バージョン 6.4.4 を使用して、MySQL で動作するライトスイッチを取得しました。ただし、接続を確立してデータベースを選択すると、「プロバイダーは ProviderManifestToken 文字列を返しませんでした」というエラーが表示されます。

これを修正するには、接続プロパティ ウィンドウの [詳細設定] タブをクリックします。セキュリティ セクションまで下にスクロールし、Persist Security Info で true を選択します。

これにより、エンティティ フレームワークはテーブルに対してクエリを実行できます。

これでテストアプリを作成し、自分のコンピューターに公開しました。また、完全な crud 操作も実行できます!

万歳。

PS ネストされたトランザクションのホットフィックスはこちら: http://archive.msdn.microsoft.com/KB2534087

于 2011-09-29T14:40:43.040 に答える