1

私のWPF4デスクトップアプリケーションでは、ADO.NET Entity Data Model(edmx)を使用してSQL Server 2008 R2への接続を使用しています。アプリケーションがDBへの接続を確立(オープン)するまでに長時間(約10秒)を要し、基本的なLINQクエリ(結合がない、テーブルが実際には小さい)を実行し、DataGridコントロールに結果を表示することができます。最初のアプリケーション起動時にSQL Serverへの接続が遅すぎる

ローカルPCにSQL Server 2008 R2がインストールされているため、ネットワークの負荷に問題はありません。

私は(外部のスレッドで)SQL接続を構築する方法は:

public static DBEntities dbContext = new DBEntities(); 
    dbContext.Connection.Open(); 

接続構成:

<connectionStrings> 
     <add name="DBEntities" connectionString="metadata=res://*/DBModel.csdl|res://*/DBModel.ssdl|res://*/DBModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=.\SQLEXPRESS;Initial Catalog=DB;Integrated Security=True;MultipleActiveResultSets=True&quot;" providerName="System.Data.EntityClient" /> 
    </connectionStrings> 

私の質問は、それは小さな基本的なWPFアプリケーション(300キロバイトの実行可能ファイルの正常な動作です、重い計算なし)ローカルSQL Serverへの接続を約10-13秒確立するには?

私は10秒、とにかく、私のハードウェアはとても現代的ではないことを、仮定、しかし...

あなたはSQL Serverへの最初の接続のパフォーマンスを向上させるために私にいくつかのソリューションを提案してもらえますか?

P.S.最初の長い接続プログラムが正常に動作し、パフォーマンス上の問題はありません。

+0

できますSQLサーバアクセスインターネット)? –

答えて

2

SQL Serverを使用したWCFを介したn層アプリケーションのこの「パフォーマンスの悪い」動作について知っています。 10〜13秒は本当に迷惑でかなり極端ですが。私が行うことは、WCFサービスへの接続を蹴ることです。その後、SQL Serverの選択クエリ(EF付き)を使用してWCFサービスへのダミー呼び出しをSQL Server接続にスプラッシュスクリーンで表示します。

このようにして、エンドユーザはこの初回起動遅延を経験しません。エンドユーザが実際にデータを表示/取得したいとき、アプリケーションは応答性があります。

これは実際には「あなたの問題を解決」しませんが、それは素敵な回避策/カバーアップです。

1

これはモデルの複雑さに大きく依存します。合理的に複雑な場合は、ビューを生成すると遅延が発生する可能性があります。 hereのように、ビルド時にビューを事前生成することができます。

+0

私はvviewsをまったく使用していません。私のERDには13-15テーブルしかなく、3NFの正規化とM:Nのような基本的な関係があります。この状況でビューを使用する必要がありますか?これはパフォーマンスを改善しますか?ありがとう。 –

+0

私は信じていないアレックスは、SQL Serverのビューについて話しています。 EFを使用している場合は、「ビュー」を使用しています。リンクを読んで、ビューを事前に生成してみてください。パフォーマンスが向上します。 –

+0

しかし、皆さん、「単純な状況」で10〜13秒のパフォーマンスは、何か別のことが起こっていることを意味します... –

関連する問題