まず、既存のデータベースなしでEntity Frameworkコードを使用しようとしています。SetInitializerがストラテジを渡したときのEntity Frameworkエラー
セットアップがうまくいってデータベースを作成していました。
私がしたかったのは、SetInitializer Strategyだったので、いくつかのテストデータを書き込むことができました。
私はここでの例を以下ました:
だから私はこのような初期化子を追加しました:
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_Start
にGlobal.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テーブルは、データベースを削除し、再度アプリケーションを実行しよう
私は同じ問題を抱えていました。解決策は、データベースを削除してアプリケーションを再実行することでした。 ありがとう – Ezequiel