【发布时间】:2016-07-31 08:00:28
【问题描述】:
我知道这在 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 对象?
【问题讨论】:
-
错字提示:这是一个乘客 - 不是“乘客”
-
您可以将
ArchiveFlight设为基类。或者将 CUD 操作映射到存储过程,并在Flight的删除过程中,将删除的航班复制到ArchiveFlight表中。
标签: c# entity-framework inheritance casting