2011-08-16 2 views
2

まず、既存のデータベースなしでEntity Frameworkコードを使用しようとしています。SetInitializerがストラテジを渡したときのEntity Frameworkエラー

セットアップがうまくいってデータベースを作成していました。

私がしたかったのは、SetInitializer Strategyだったので、いくつかのテストデータを書き込むことができました。

私はここでの例を以下ました:

http://www.asp.net/entity-framework/tutorials/creating-an-entity-framework-data-model-for-an-asp-net-mvc-application

だから私はこのような初期化子を追加しました:

public class MyInitializer : DropCreateDatabaseIfModelChanges<MyContext> 
    { 
     protected override void Seed(MyContext context) 
     { 
      var students = new List<Student> 
      { 
       new Student { FirstMidName = "Carson", LastName = "Alexander", EnrollmentDate = DateTime.Parse("2005-09-01") }, 
       new Student { FirstMidName = "Meredith", LastName = "Alonso", EnrollmentDate = DateTime.Parse("2002-09-01") }, 
       new Student { FirstMidName = "Arturo", LastName = "Anand",  EnrollmentDate = DateTime.Parse("2003-09-01") }, 
       new Student { FirstMidName = "Gytis", LastName = "Barzdukas", EnrollmentDate = DateTime.Parse("2002-09-01") }, 
       new Student { FirstMidName = "Yan",  LastName = "Li",  EnrollmentDate = DateTime.Parse("2002-09-01") }, 
       new Student { FirstMidName = "Peggy", LastName = "Justice", EnrollmentDate = DateTime.Parse("2001-09-01") }, 
       new Student { FirstMidName = "Laura", LastName = "Norman", EnrollmentDate = DateTime.Parse("2003-09-01") }, 
       new Student { FirstMidName = "Nino",  LastName = "Olivetto", EnrollmentDate = DateTime.Parse("2005-09-01") } 
      }; 
      students.ForEach(s => context.Students.Add(s)); 
      context.SaveChanges(); 
     } 
    } 

私は、コメントを追加しました:

Database.SetInitializer<MyContext>(new MyInitializer()); 

Application_StartGlobal.ascxファイルをダウンロードし、サイトを実行しました。私は得た:

EdmMetadataタイプがモデルに含まれていなかったので、モデルの互換性はチェックできません。 IncludeMetadataConventionがDbModelBuilderの規則に追加されていることを確認します。私は、その後のDataContextで見つかった

私のような何かを持っていた:私はまだ同じエラーを取得しかし

protected override void OnModelCreating(System.Data.Entity.DbModelBuilder modelBuilder) 
     { 
      modelBuilder.Conventions.Remove<PluralizingTableNameConvention>(); 
      //modelBuilder.Conventions 
      //.Remove<System.Data.Entity.Infrastructure.IncludeMetadataConvention>(); 
     } 

:だから私は、私はそれを変更し、問題を発見した思考

protected override void OnModelCreating(System.Data.Entity.DbModelBuilder modelBuilder) 
     { 
      modelBuilder.Conventions.Remove<PluralizingTableNameConvention>(); 
      modelBuilder.Conventions 
      .Remove<System.Data.Entity.Infrastructure.IncludeMetadataConvention>(); 
     } 

を。何か案は?

編集更新:

私はただ見ていたし、EdmMetadataテーブルは、データベースを削除し、再度アプリケーションを実行しよう

答えて

4

を移入されていません気づきました。

+0

私は同じ問題を抱えていました。解決策は、データベースを削除してアプリケーションを再実行することでした。 ありがとう – Ezequiel

関連する問題