2

オフラインとオンラインの 2 つの DB があります。

オフライン DB が存在するシステムで、WCF と Entity Framework を使用して、オフライン DB からレコードをプルし、オンライン DB にプッシュするスケジュールされたアプリケーションを作成しました。

アプリケーションは一度に 10 レコードのバッチをプルしてからプッシュします。

ほとんどの場合、オンライン データベースに配置する必要があるオフライン データベースには多数のレコードがあります。

したがって、ループはそれを実行します

  1. オフライン DB からデータベースをプルします。
  2. それらを WCF にプッシュします。
  3. WCF は DAL レイヤーを呼び出し、それらのレコードはオンライン DB に挿入されています。
  4. リクエストが完了した後、オフライン データベースにアップロードされたレコードのバッチをマークします。

数回は問題なく実行されますが、エラーが発生します

{「接続タイムアウトが期限切れになりました。ログイン後のフェーズでタイムアウト期間が経過しました。サーバーがログイン プロセスを完了して応答するのを待っている間に接続がタイムアウトになった可能性があります。または、複数のアクティブな接続を作成しようとしているときにタイムアウトになった可能性があります。このサーバーへの接続試行にかかった時間は - [ログイン前] 初期化 = 3977; ハンドシェイク = 7725; [ログイン] 初期化 = 0; 認証 = 0; [ログイン後] 完了 = 3019; "}

これはなぜ起こり、どうすれば解決できますか?

4

1 に答える 1

0

あなたが言及したポイント3で

WCF は DAL レイヤーを呼び出し、それらのレコードはオンライン DB に挿入されています。

データベースにどのようにレコードを挿入していますか?

コンテキストを破棄する必要があるため、作成しようとしている次のリクエストで使用できます。

「using」ステートメントを好むでしょう。このようなもの

      using (var context = new YourContext())
       {
           context.methodThatIsUsedToInsertRecords();
       }

これを試して

于 2012-07-14T13:05:20.273 に答える