2016-05-08 7 views
0

mvcで小さなテストサイトを作成しようとしています。 私は、モデルを作成しました:asp.net mvcのデータベース初期化エラー5

public class Subject_Master 
    { 
     public Subject_Master() 
     { 
     } 
     public Subject_Master(string Subject_Name) 
     { 
      this.Subject_Name = Subject_Name; 
     } 
     public int Subject_MasterId { get; set; } 
     public string Subject_Name { get; set; } 
    } 

コンテキストです:

public class MyContext : DbContext 
    { 
     public DbSet<StudentAccount> StudentAccount { get; set; } 
     public DbSet<Subject_Master> Subject_Master { get; set; } 
    } 

初期化子:

namespace MyProj.Models 
{ 
    public class DBInitializer:DropCreateDatabaseIfModelChanges<XpertsContext> 
    { 
     protected override void Seed(XpertsContext context) 
     { 
      var Subject_Master_List = new List<Subject_Master>(); 

      Subject_Master_List.Add(new Subject_Master("English")); 
      Subject_Master_List.Add(new Subject_Master("Hindi")); 
      Subject_Master_List.Add(new Subject_Master("Bengali")); 

      foreach (var subject in Subject_Master_List) 
      { 
       context.Subject_Master.Add(subject); 
      } 

      context.SaveChanges(); 
     } 
    } 
} 

データベースが作成されますが、データが挿入取得されていません。

私は間違っていますか?

答えて

2

あなたが書いたこの​​クラスを使用することを忘れてしまったようです。初期化子のSeed方法は、クエリがMyContextではなく、あなたのアプリケーションの起動に対して行われる最初の時間と呼ばれることを忘れないでください。また

Database.SetInitializer(new DBInitializer()); 

:あなたではApplication_StartあなたはSetInitializer静的メソッドを使用して、所望の初期化子を指定することができます。

また、hereのように、web.configファイルでイニシャライザを指定することもできます。

+0

私はそれをしました。しかし、今はプロジェクトを実行したときにデータを挿入しませんでした。どのくらい私は、データベース全体を削除し、プロジェクトを再実行した。それが挿入されました。何らかの方法がありますか?dbが既に作成されている場合、dbを削除/再作成することなくデータが挿入されますか? – Priyabrata

+1

これは普通です。あなたがどのクラスから派生しているのか見てください: 'DropCreateDatabaseIfModelChanges'。 'If​​ModelChanges'の部分は重要です。コンテキストが最初になったときにデータベースを常に再作成したい場合は、おそらく['DropCreateDatabaseAlways'](https://msdn.microsoft.com/en-us/library/gg679506(v=11113).aspx)が必要です中古。 –

+0

Thanx a bunch !! – Priyabrata

関連する問題