コードの最初のデータベースでプロジェクトを開始しましたが、今は本番データベースのコピーに切り替えて、テスト環境を本番環境のように見せるようにしました。したがって、私はEFがテーブルを作成することを望んでいません(すでに存在しています)。そして、テーブルを削除したくないと確信しています。Entity Frameworkはデータベースを削除したいのですが、なぜですか?
だから、私は私のGlobal.asax.csのApplication_Start()の先頭にこれを追加しました:
Database.SetInitializer<ProjectContext>(null);
しかし、私はまだというエラーメッセージが表示されます:
は「削除できません。データベース 'master'はシステムデータベースであるためです。
nullで初期化した後でドロップを試してやろうとは思わなかったのですか?私のコントローラで
は、私は次のようにします。
var userclientobjectvalues = context.UserClientObjectValues;
var projects = context.Projects;
var users = context.Users;
var objectvalues = context.ObjectValues;
var userProjects = userclientobjectvalues.Where(v => v.user_id == user);
最初の4行は、ちょうど私が正しくデータを収集していますことを確認します。また、デバッグモードでは、結果ビューはすべてのデータで正しく展開されます。
上記クラッシュは、上記のコードブロックの最後の行で発生します。 Global.asax.csから
:
protected void Application_Start()
{
Database.SetInitializer(new NullDatabaseInitializer<ProjectContext>());
AreaRegistration.RegisterAllAreas();
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
}
'Application_Start()'で何か他のことをしていますか?何らかの理由で 'ProjectContext'にアクセスしようとするものは何ですか? – Jcl
あなたはDatabase.Log = s => Debug.WriteLine(s)から意味のあるものを得ますか? ? –
簡単なテスト:デバッグ時に、 'Database.SetInitializer'行にブレークポイントを設定すると、エラーが出る前にヒットしますか? – Jcl