1

私はasp.net mvcに取り組んでいます。Code-First Entity Model を実装しようとしています。次の手順を実行しました。

1、クラス Student.cs を作成しました

public class Student
{
    public int StudentID { get; set; }
    public string StudentName { get; set; }
    public string Branch { get; set; }
    public decimal Marks { get; set; }
    public string Address { get; set; }
}

2、次のようなコンテキストクラスを作成しました。

 public class StudentContext:DbContext
    {
        public StudentContext()
        {
            Database.SetInitializer(new StudentContextInitializer());
        }

        public DbSet<Student> Student { get; set; }

        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
        }
    }

3、次のような Studentcontextinitializer クラスを作成しました。

public class StudentContextInitializer : DropCreateDatabaseIfModelChanges<StudentContext>
    {
        protected override void Seed(StudentContext context)
        {
            context.Student.Add(new Student { StudentName="madhav",Branch="CSE",Marks=888,Address="AKP" });
            context.Student.Add(new Student { StudentName = "Tirumalesh", Branch = "IT", Marks = 988, Address = "MDP" });
            context.Student.Add(new Student { StudentName = "Venkat", Branch = "ECE", Marks = 1000, Address = "BZA" });
            context.SaveChanges();
        }
    }

データベースに正常に接続されましたが、一部のデータで dbcontext を初期化できません。つまり、studentcontextinitializer クラスでいくつかのレコードをハードコーディングしましたが、そのレコードをデータベース テーブルにバインドできません。だから私を導いてください。

4

1 に答える 1

2

モデルDropCreateDatabaseIfModelChangesを変更したときにのみデータベースを初期化します。いくつかのオプションがあります。

  1. データベースを手動で削除し、再実行してください。
  2. モデル プロパティを変更します。たとえば、エンティティに追加public string test { get; set; }してStudent再実行します。
  3. から初期化子を拡張しますDropCreateDatabaseAlwaysInitializer。これにより、アプリを再構築して再実行するたびに、データベースが削除、再作成、およびシードされます。
于 2012-10-17T15:31:53.567 に答える