2016-06-22 14 views
1

データを作成するSeed()メソッドのコードを変更したいときに、コンソールにUpdate-Databaseコマンドを入力してEnterを押すと、データベースに同じデータがあります変更する前のように。Seed()メソッドで変更した後にデータベースを更新する方法

たとえば、年齢が15歳から20歳に変更する必要がある場合は、変更を保存して「Update-Database」コマンドを入力します。しかし、私はまだ年齢= 15を持っています。私は知っていると働く1つのオプションは、Migrationsフォルダを削除し、ConnectionStringsのデータベースの名前を変更してから、コマンドを入れますEnable-MigrationsAdd-migrationUpdate-Databaseしかし、私は最適なソリューションだと思う。これは、以下の私のSeed()メソッドです。

protected override void Seed(Repository.Models.OglContext context) 
     { 
      var store = new UserStore<User>(context); 
      var manager = new UserManager<User>(store); 
      if (!context.Users.Any(u => u.UserName == "Admin")) 
      { 
       var user = new User { UserName = "Admin", Age = 115 }; 
       var adminresult = manager.Create(user, "12345678"); 

       if (adminresult.Succeeded) 
        manager.AddToRole(user.Id, "Admin"); 
      } 
     } 

問題を解決するにはどうすればよいですか?

+0

はい、これはEFです。たとえば、int age = 15からage = 20に変更する必要があります。変更を保存し、 "Update-Database"コマンドを実行します。しかし、データベースで私はまだ年齢= 15を持っています。 – kenzolek

+0

"更新は登録された移行に含まれていますか?" ...どのように私はこれをチェックできますか? – kenzolek

+0

シードメソッドを投稿 –

答えて

2

あなたはcontext.SaveChanges()を呼び出さなければなりません。さもなければデータは保存されません!

  • 複数の移行レベルがある場合は、DbSet.AddOrUpdate()を使用する必要があります。
  • また、そのような移行ファイル内で移行中にデータベースを更新することもできます。

    public partial class MigrationFile : DbMigration 
    { 
        public override void Up() 
        { 
        // Add or update the data 
        Sql("UPDATE ..."); 
        Sql("INSERT ..."); 
        } 
    
        public override void Down() 
        { 
        // Remove Data 
        } 
    } 
    
1

あなたはそれがすでに存在しているときに、ユーザーを編集するelseステートメントを追加する必要があります。

var user = context.Users.Where(u => u.UserName == "Admin"); 
if (user == null)) 
{ 
    user = new User { UserName = "Admin", Age = 115 }; 
    var adminresult = manager.Create(user, "12345678"); 

    if (adminresult.Succeeded) 
     manager.AddToRole(user.Id, "Admin"); 
} 
else 
{ 
    user.Age = 20; 
} 
context.SaveChanges() 
+0

エラーを返します: var user = context.Users.Where(u => u.UserName == "Admin"); if(user == null) { user = new Uzytkownik {UserName = "Admin"、Age = 115}; var adminresult = manager.Create(user、 "12345678"); (adminresult.Succeeded) manager.AddToRole } else { user.Age = 2054; } context.SaveChanges(); – kenzolek

関連する問題