0
我明白在C#中這是不可能的,但我需要以某種方式做到這一點。我有兩個班級,航班列表的基礎班。無法將基類對象轉換爲派生類型對象,實體框架代碼優先
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; }
}
和派生類航班歸檔列表。
class ArchiveFlight :Flight
{
}
這是我DbContext
類。
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; }
}
}
我需要做這樣的事情。
flights.FlightsArchive.Add((ArchiveFlight)flightToclean);
flights.Flights.Remove(flightToclean);
其中flightToclean
是Flight
的類型。 flights
是FlightsDatabase
的類型。
我可以很快做到這一點嗎?或者是否需要創建新的ArchiveFlight
對象並將Flight
對象的所有屬性複製到新的ArchiveFlight
對象?
錯字提醒:這是**乘客** - 不是「passanger」 –
您可以將'ArchiveFlight'作爲基類。或者將CUD操作映射到存儲過程和「Flight」的刪除過程中,將已刪除的航班複製到「ArchiveFlight」表中。 –