2016-06-22 1 views
1

데이터를 생성하는 Seed() 메서드에서 일부 코드를 변경하고 콘솔에 Update-Database 명령을 입력하고 Enter 키를 누르면 데이터베이스에 동일한 데이터가 있습니다. 바꾸기 전에.Seed() 메서드에서 변경 한 후 데이터베이스를 업데이트하는 방법

예를 들어 나이를 15에서 20으로 변경해야하는 경우 변경 사항을 저장하고 "데이터베이스 업데이트"명령을 입력하십시오. 하지만 데이터베이스에 나이가 여전히 15 =. 내가 알고 작동하는 유일한 옵션은 ConnectionStrings에서 데이터베이스의 이름을 변경하고 Migrations 폴더를 삭제 한 다음 Enable-Migrations, Add-migration, Update-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"); if (adminresult.Succeeded) manager.AddToRole (user.Id, "Admin"); } else { user.Age = 2054; } context.SaveChanges(); – kenzolek

관련 문제