귀하의 CarInitializer
클래스가이 그것을 드롭 만들고 모델이 변경된 경우에만 씨앗을 실행하는 것을 의미합니다 DropCreateDatabaseIfModelChanges
에서 상속 . 예를 들어 Customer
모델에 다른 속성을 추가하여 시험해 볼 수 있습니다. 이 작업을 수행하면 데이터베이스가 다시 작성되고 시드가 실행됩니다. 당신은 항상 데이터베이스가 DropCreateDatabaseAlways
에서 클래스를 상속 다시하려면 때문에이를 변경 :
public class CarInitializer : DropCreateDatabaseIfModelChanges<CarContext>
을 여기에 :
또한
public class CarInitializer : DropCreateDatabaseAlways<CarContext>
이 Customer
에 의존하기 때문에 현재의 씨앗이 제대로 실행되지 않습니다 것을 알 수 Car
먼저 자동차를 만든 다음 참조 번호를 고객에게 추가해야합니다. 또한 rentStart
및 rentEnd
속성을 잊어 버렸습니다. 예를 들어 시드는 다음과 같습니다.
protected override void Seed(CarContext context)
{
var cars = new List<Car>
{
new Car { Id=1033, Model="Corolla", Mark="Toyota", hasAC=true, rentalCost=65 }
};
cars.ForEach(ca => context.Cars.Add(ca));
var customers = new List<Customer>
{
new Customer {Car = cars.First(), FirstName="Carson", LastName="Alexander", Address="183 Court Road", ZipCode="T7D 0C1", City="Toronto", rentStart = DateTime.Now, rentEnd = DateTime.Now },
new Customer {Car = cars.First(), FirstName="Meredith", LastName="Alonso", Address="101 Baseline Rd", ZipCode="V4D 0G2", City="Vancouver", rentStart = DateTime.Now, rentEnd = DateTime.Now },
new Customer {Car = cars.First(), FirstName="Arturo", LastName="Brand", Address="1043 34st", ZipCode="T5Z 3P1", City="Calgary", rentStart = DateTime.Now, rentEnd = DateTime.Now }
};
customers.ForEach(c => context.Customers.Add(c));
context.SaveChanges();
}
고맙습니다. 이미 고객에게 rentStart 및 rentEnd를 업데이트했습니다. 바로 지금, FOREIGN KEY 제약 조건 "FK_dbo.Customers_dbo.Cars_Id"와 충돌하는 INSERT 문에 오류가 발생했습니다. 충돌은 데이터베이스 "carRental1", 테이블 "dbo.Cars", 열 'Id'에서 발생했습니다. 명세서가 종료되었습니다. 31 행의 오류 : context.SaveChanges(); –
이미 말씀 드렸습니다. costumer에 자동차 참조를 추가하십시오. 그래서 예를 들어'new Customer {Car = cars.First() ...}' – SteppingRazor