2

アプリケーションで Entity Framework (EF) 5.0、Code First アプローチ、および SQL Server CE 4.0 データベースを使用しています。ただし、アプリケーションの起動時に大きなパフォーマンスの問題に直面しています。

インターネットで検索したところ、どの操作が起動パフォーマンスに影響するかを説明しているこの記事を見つけました。そのうちの 1 つがビューの生成です。そこで、実行時にビューを作成する代わりに、コンパイル時にビューを生成し、実行時にそれらを EF にリンクする方法を調べました。DbContext クラスを介してビューを生成するコマンドを提供する Entity Framework Power Tools に出会いました。

この記事で説明されているように、Entity Framework Power Tools を使用して、コンパイル時にビューを生成しました。ただし、SQL Server CE でアプリケーションを実行すると、常に次の例外が生成されます。

EntityContainer 'DatabaseContext' のマッピングおよびメタデータ情報が、事前生成されたビューの作成に使用された情報と一致しなくなりました。

一方、同じアプリケーションは SQL Server データベースで正常に動作します。そのため、さらに検索しましたが、この問題の修正は見つかりませんでした。以下は、同様のパフォーマンスの問題が報告されているリンクです。

  1. MSDN ブログ
  2. MSDN の Entity Framework フォーラム

私の質問は次のとおりです:「このアプリケーションの起動時のパフォーマンスの問題に対する回避策または解決策はありますか?」SQL サーバーではなく、SQL サーバー CE を使用する必要があります。

4

1 に答える 1

3

実際、EF Power ツールはデフォルト プロバイダーSqlClientを使用してビューを生成していましたが、 SqlServerCe.4.0プロバイダーのビューを生成する必要がありました。生成されたビューが古くなるたびに理由を理解できず、最終的にその理由を理解しました。動作していませんでした。

そのため、コンテキスト クラスから DbContext コンストラクターにコメントを付けてから、EF Power Tools の "Generate Views" および "View Entity Data Model XML" コマンドを実行すると、EF Power Tools はApp.configから接続文字列を取得しました。 SqlClient をプロバイダーとして Sql Server に接続する既定の接続文字列を使用します。

したがって、誰かが Devart の Oracle プロバイダーなどの他のプロバイダーを使用している場合は、接続文字列とプロバイダー情報を App.config (デスクトップ アプリケーションの場合) または web.config ( Web アプリケーション) を作成し、DbContext コンストラクターをコメント アウトします (または、プロセッサごとに使用して EF Power Tools から非表示にします)。

于 2013-01-22T06:55:56.537 に答える