2

Linq2Sql から Entity Framework への意図的な移行の一環として、10 個のエンティティで構成される小さな EF モデルを作成しました。レガシー アプリケーションを使用しているため、「コード ファースト」オプションを使用し、POCO オブジェクトをデータベース内のテーブルに手動でマッピングしています。 Entity Framework コードでデータベースを更新する必要はありません。 これを達成するために必要なことは次のことだけだと思います.SetInitializerコードをここに置くべきか、Global.asaxコードに置くべきかわからなかったので、確認していただければ幸いです。

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    Database.SetInitializer<InboxDataContext>(null);

    modelBuilder.Configurations.Add(new Subscribers.Mapping.DataSourceMap());
    modelBuilder.Configurations.Add(new Subscribers.Mapping.SubscriberMap());
    ...
}

この更新の一環として、小さなテスト ページ (MVC コントローラーとビュー) を作成し、メイン アプリケーション プロジェクトに追加しました。開発およびテスト中、これはうまく機能しました。私たちが気付いた唯一のことは、基礎となる EF モデルを更新した場合、最初のページの読み込みでレンダリングに数分かかるように見えたことです。これは、変更を反映するために EF がビューとマッピングを再構築しなければならなかったためだと思いました。機種変更時のみ発生したようです。

今朝、初期テストのためにこの更新を運用サーバーにロードしましたが、今回は初期ロードの問題がさらに悪化し、実際にはテスト ページがまったくロードされませんでした。

だから、私の質問に到達するには:

  1. アプリケーションを本番用に準備するために、他にすべき/すべきでないことはありますか?
  2. 初期ロードのパフォーマンスを改善するにはどうすればよいですか?
  3. 運用サーバーでの初期ロードが完了しない理由を確認するにはどうすればよいですか? エラー メッセージが表示されません。

Entity Framework Power Tools をダウンロードして、派生した DbContext クラスで [ビューの生成] オプションを実行してみましたが、これは開発環境でしか実行できなかったため、運用サーバーにコピーしたときにこれが機能するかどうかはわかりませんでした。見えませんでした。

開発環境にはメイン テーブルに 100 レコードしか含まれておらず、運用環境にはほぼ 100 万レコード (同じスキーマ) が含まれていることに注意してください。

ヘルプアドバイスをいただければ幸いです。

ありがとう。

4

1 に答える 1

1

まず、既存のデータベースを使用している場合、より良いアプローチはモデル ファーストです。Edmx を現在のデータベースに接続すると、必要なすべてのマッピングが現在の状態で収集されます。次に、POCO クラスと DbContext も生成します (EF5 では、<5 で手動で行う必要があります)。このアプローチを使用すると、実行時にコードでモデルを作成する必要がないため、初期化時間が短縮される場合があります。

これを試してみると、すべての問題が解決する可能性があります (それらはすべて関連していると思います)。

于 2012-10-24T14:24:05.070 に答える