これは、それはモデルが変更された場合にのみ、ドロップ作成し、シードを実行することを意味し。たとえば、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