1

いくつかの Entity Framework db I/o を TransactionScope 内にラップしたいと考えています。一般的にはうまく機能しています。しかし:基本的に次のようなケースがあります:

using (var tx=new TransactionScope())
{
  using (var cx=new MyDbcontext())
  {
    var myrecord=cx.somerecorord.find(someid);
    if (Roles.IsUserInRole(username, "admin"))
      DoAdminThing(myrecord);
    else
      DoNonAdminThing(myrecord);
    cx.SaveChanges();
  }
}

これは、Roles.IsUserInRole で「プロバイダーが ProviderManifestToken 文字列を返さなかった」というエラーで爆発します。

EF TransactionScope 内で asp.net セキュリティ db I/o を実行するのが好きではないようです。これを回避する方法はありますか?

ロールのものをトランザクションの前に移動する必要はありません。それには、論理的にぶら下がっている関数を分割する必要があります。

4

0 に答える 0