0

SQL ServerCompact4.0データベースを使用するようにアプリケーションをテストしています。アプリケーションは、データベースが存在する場合はそれを使用し、存在しない場合はEntity Framework4.3Migrationsを使用してデータベースを構築します。

ただし、プログラムがアイドル状態のときにファイルを削除してから、データベースの読み取りを引き起こすアクションを実行すると、File not foundエラーが発生します。これは現実世界のシナリオではありませんが、何が起こっているのかを理解したいと思います。

フレームワークは、バックグラウンドのどこかで、データベースを作成する必要があるかどうかのチェックがすでに行われているという事実を追跡しているようです。それが本当にそうなのかどうか、私はそれが好きかどうかわかりません。

では、データベースが最初にアクセスされたときに作成されたのに、プログラムの実行中に再作成されなかったのはなぜですか?(これには多くの正当な理由があることを理解していますが、実装がどこにあるのか知りたいです)。

4

1 に答える 1

1

データベースの作成はEF初期化の一部であるため、初期化は通常、コンテキストを使用してデータを初めて取得または永続化するときに、コンテキストタイプごとに1回だけ発生します。アプリケーションの実行時にデータベースを削除することはEFのユースケースではないため、このシナリオをサポートする場合は、自分で処理する必要があります。dbContext.Database.Initialize(true);初期化は非常にコストのかかる操作であり、アプリにスレッドがないため、実際の必要なしにこの操作を実行しないでくださいを使用して、EFの再初期化を試みることができます。初期化の実行中にデータベースにアクセスできます。

于 2012-07-09T08:33:52.573 に答える