2014-12-21 3 views
0

나는 대부분의 시간 동안 잘 작동하는 마이 그 레이션 및 시드와 함께 EF 6을 사용합니다. 처음 사용했을 때 파종에 문제가 있습니다.asp.net 코드 첫 번째 마이 그 레이션 시드

내 데이터베이스 (나무 테이블)에 저장된 테이블이 있는데이 도메인 모델에 대한 시작점이므로 시드에 모든 항목을 만들고 추가하여 테이블에 추가합니다. 다른 데이터베이스 테이블에 추가 속성이나 관계를 추가하면 update-database가 훌륭하게 작동하고 새 물건이 데이터베이스에 추가됩니다. 또한 "runnig seeding"이라고 말하지만 기존 테이블을 업데이트하지 않습니다!

context.Tables.AddOrUpdate(newTable); 

을 업데이트하기 위해 파종 방법을 강제 할 수있는 방법이 있나요 : 나는 항상 데이터베이스를 삭제하고 내가 사용하는 경우에도 기존 데이터에 새로운 물건을 추가 다시 업데이트 데이터베이스를 실행해야?

다시 시도해보십시오. 시드 방법은 기존 콘텐츠를 업데이트하지 않습니다. 사람을 추가하십시오 :

new Person 
{ 
    ID = 1, 
    Name = "Smith" 
} 

이제 시딩 방법을 실행하십시오 .e. 그런 다음

new Person 
{ 
    ID = 1, 
    Name = "Smith", 
    Prename = "John" 
} 

씨 다시 사람에게 추가 데이터를 추가하고 데이터베이스에 대한 당신의 사람은 업데이트되지 않습니다!

제 해결 방법은 데이터베이스를 삭제하고 다시 시드하는 것입니다. 모델이 변경되지 않으므로 DropAndCreateIfModelChanges가 작동하지 않습니다. 시드 만 변경됩니다.

답변

0

죄송합니다. 귀하의 문제를 정확하게 이해할 수 없습니다. 데이터의 시드는 사용자의 책임이며 엔티티 프레임 워크는 이와 관련하여 아무 것도 할 수 없습니다. DbMigrationsConfiguration 등급의 Seed 방법으로 적절한 코드를 작성하십시오.

그러면 패키지 관리자 콘솔에서 update-database 명령을 사용하여 Seed 메서드 실행을 트리거 할 수 있습니다. DbContext이 처음 사용될 때도 호출되므로 응용 프로그램 풀을 다른 방법으로 다시 시작할 수 있습니다.

관련 문제