zu werfen Ich verstehe, dass es in C# unmöglich ist, aber ich muss es irgendwie tun. Ich habe zwei Klassen, eine Basisklasse für die Liste der Flüge.Kann Basisklasse Objekt nicht zu abgeleiteten Typ Objekt, Entity Framework Code-zuerst
public class Flight
{
[Key]
public string FlightNumber { get; set; }
public DateTime Arrival { get; set; }
public DateTime Departure { get; set; }
public string CityOfArrival { get; set; }
public string CityOfDeparture { get; set; }
public char Terminal { get; set; }
public FlightStatus Status { get; set; }
public int Gate { get; set; }
public virtual ICollection<Passenger> Passengers { get; set; }
public double PriceForFirstClass { get; set; }
public double PriceForBusiness { get; set; }
public double PriceForEconom { get; set; }
}
Und abgeleitete Klasse für Archivliste der Flüge.
class ArchiveFlight :Flight
{
}
Hier ist meine DbContext
Klasse.
class FlightsDatabase : DbContext
{
protected override void OnModelCreating(DbModelBuilder builder)
{
builder.Entity<Flight>().HasMany(x => x.Passengers).
WithOptional(x => x.Flight).HasForeignKey(x => x.flightNumber).WillCascadeOnDelete(true);
}
public DbSet<Flight> Flights { get; set;}
public DbSet<ArchiveFlight> FlightsArchive { get; set; }
public DbSet<Passenger> Passengers { get; set; }
}
}
Ich muss so etwas tun.
flights.FlightsArchive.Add((ArchiveFlight)flightToclean);
flights.Flights.Remove(flightToclean);
Wo flightToclean
ist Typ Flight
. flights
ist ein Typ von FlightsDatabase
.
Kann ich dies in Kürze tun oder muss ich neu erstellen ArchiveFlight
Objekt und kopieren Sie alle Eigenschaften von Flight
Objekt auf neue ArchiveFlight
Objekt?
Tippfehler: Es ist ein ** Passagier ** - kein "passanger" –
Sie könnten ArchivFlight die Basisklasse machen. Oder ordnen Sie CUD-Aktionen gespeicherten Prozeduren zu und kopieren Sie in der Löschprozedur eines 'Flight' den gelöschten Flug in die 'ArchiveFlight'-Tabelle. –