Ihre CarInitializer
Klasse erbt von DropCreateDatabaseIfModelChanges
dies bedeutet, wird fallen, erstellen und Samen nur ausgeführt, wenn das Modell geändert hat . Sie können es versuchen, indem Sie zum Beispiel eine weitere Eigenschaft zu Ihrem Customer
Modell hinzufügen. Wenn Sie dies tun, wird die Datenbank neu erstellt und der Seed wird ausgeführt. Wenn Sie wollen immer die Datenbank erstellen Sie Ihre Klasse von DropCreateDatabaseAlways
erben so das ändern:
public class CarInitializer : DropCreateDatabaseIfModelChanges<CarContext>
dazu:
public class CarInitializer : DropCreateDatabaseAlways<CarContext>
Beachten Sie auch, dass Ihre aktuelle Samen nicht richtig ausgeführt werden, da Customer
abhängt Car
so müssen Sie zuerst ein Auto erstellen und dann seine Referenz zum Kunden hinzufügen. Auch Sie haben rentStart
und rentEnd
Eigenschaften vergessen. So kann Ihr Seed beispielsweise so aussehen:
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();
}
Vielen Dank dafür. Ich habe bereits Kunden mit rentStart und rentEnd aktualisiert. Im Moment habe ich einen Fehler bei der INSERT-Anweisung, die mit der FOREIGN KEY-Einschränkung "FK_dbo.Customers_dbo.Cars_Id" in Konflikt steht. Der Konflikt ist in der Datenbank "carRental1", Tabelle "dbo.Cars", Spalte "Id" aufgetreten. Die Anweisung wurde beendet. Fehler in Zeile 31: context.SaveChanges(); –
Ich habe es dir schon gesagt. Fügen Sie dem Kunden die Fahrzeugreferenz hinzu. Also zum Beispiel 'neuer Kunde {Car = cars.First() ...}' – SteppingRazor