Ich versuche, One-to-One-Beziehung mit EF-Code zuerst für die folgenden Klassen zu organisieren. Bus ist eine Hauptklasse und Schedule ist abhängig.Eins-zu-eins-Beziehung Code Zuerst nicht EF-Konventionen folgen
public class Bus
{
public int Id { get; set; }
public virtual Schedule Schedule { get; set; }
}
public class Schedule
{
public int Id { get; set; }
public string Name { get; set; }
public DateTime BusRouteStartTime { get; set; }
public DateTime BusRouteEndTime { get; set; }
public DateTime ArrivalTime { get; set; }
public DateTime DepartureTime { get; set; }
[ForeignKey("Bus")]
public int BusId { get; set; }
public virtual Bus Bus { get; set; }
}
Ich machte diese Klassen mit this Tutorial. Wenn ich Enable-Migrationen in PCM und ich bekomme diese Fehlermeldung:
Bus_Schedule_Target: : Multiplicity is not valid in Role 'Bus_Schedule_Target' in relationship 'Bus_Schedule'. Because the Dependent Role properties are not the key properties, the upper bound of the multiplicity of the Dependent Role must be '*'.
ich diesen Fehler google und this Lösung finden. Ich ändere OnModelCreating():
modelBuilder.Entity<Schedule>().HasKey(s => s.Id);
modelBuilder.Entity<Bus>()
.HasRequired(s => s.Schedule)
.WithRequiredPrincipal(b => b.Bus);
Leider hat es nicht geholfen. Ich google weiter, wenn ich verstehe, dass standardmäßig Id der abhängigen Klasse Primär- und Fremdschlüssel gleichzeitig sein muss. Es passt mir nicht, weil es später Probleme mit Ablegetabellen verursachen kann, zum Beispiel beim kaskadierenden Löschen.
Bitte helfen Sie mir, ich verstehe, dass es eine Art doppelte Frage ist, aber es wird wirklich besser sein, wenn es so gemacht werden kann.