2012-05-02 9 views
0

私はMVCアプリケーションを数週間使用してモデルを変更し、再構築しています。最近、データアノテーションの最近の変更後、 Application_Startのglobal.asaxファイルで戦略をディスパッチすることはできません。MVC 3コード最初にEFモデルからデータベースを再生成しません

したがって、私は手動でSQL Expressからデータベースを削除しました。いいえ。私は、web.configファイル内の接続文字列を持っている

protected void Application_Start() 
     { 
     Models.cummins_sqldb c = new Models.cummins_sqldb(); 
     c.Database.Initialize(true); 
     System.Data.Entity.Database.SetInitializer(new System.Data.Entity.CreateDatabaseIfNotExists<cummins_db.Models.cummins_sqldb>()); 
     System.Data.Entity.Database.SetInitializer(new System.Data.Entity.DropCreateDatabaseIfModelChanges<cummins_db.Models.cummins_sqldb>()); 

     AreaRegistration.RegisterAllAreas(); 

     RegisterGlobalFilters(GlobalFilters.Filters); 
     RegisterRoutes(RouteTable.Routes); 
     } 

は、ここに私のスタートアップコードです。

私は何を試してみるべきですか? をuはnullにすることはできません、すでにいくつかのDB 内のデータやテーブルへの外部キーを追加し、持っている:

+0

モデルにはどのような変更が加えられていますか? – FrEaKmAn

+0

基本的にいくつかのフィールド、いくつかのデータ注釈、およびナビゲーションプロパティーを追加しました – Ryan

+2

これはかなり面倒なコードです。コンテキストタイプごとに1つのイニシャライザしか設定できないので、最初の 'SetInitializer'コールは冗長です。 'Database.Initialize'を呼び出すと初期化が実行されるので、この呼び出しの後にイニシャライザが設定されていれば、それも冗長です。とにかく、おそらくあなたの問題の原因ではないでしょう。 –

答えて

0

このようなものは、uは、たとえばテーブル定義 を変更するには、競合がある場合、通常、それが起こる 私に起こりました、テーブルの上にあったデータのために新しいもの

に外部キーフィールドをウルエキサイティングなテーブルを関連付けるために、 ヌル滞在し、新しいテーブル定義 ソリューションは、このようなものであると、それは競合を持っている:

// Create a department for course to point to. 
Sql("INSERT INTO dbo.Department (Name, Budget, StartDate) VALUES ('Temp', 0.00, GETDATE())"); 
// default value for FK points to department created above. 
AddColumn("dbo.Course", "DepartmentID", c => c.Int(nullable: false, defaultValue: 1)); 
//AddColumn("dbo.Course", "DepartmentID", c => c.Int(nullable: false)); 

トム・ダイクストラは、この問題を解決するための素敵なチュートリアルがあります(第4章で)それで getting-started-with-ef-5-using-mvc-4

テイクを見て、uは簡単に最後の作業移行をロールバックすることができ、これはその後の助け

ことを願ってい その後、)男ああ、私はそれが他のいくつかのいずれかを助ける願って、今尋ねた日付を見た... :)いくつかの変更を行うデータベース を更新し、再びウル欲求

でウルデータベースを更新

関連する問題