3
我創建了2個表示數據庫實體的類。如何先在實體框架代碼中創建2個具有相同類型的dbset?
一是實體:
public enum FlightStatus
{
checkIn,
gateClosed,
arrived,
departedAt,
unknown,
canceled,
expectedAt,
delayed,
InFlight
}
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<Passanger> PassengerList { get; set; }
public double PriceForFirstClass { get; set; }
public double PriceForBusiness { get; set; }
public double PriceForEconom { get; set; }
}
二實體:
public enum Sex
{
M,
F
}
public enum FlightClass
{
First,
Business,
Econom,
}
public enum TicketType
{
OneWay,
TwoWay,
}
public class Passenger
{
[Key]
public string Passport { get; set; }
public string flightNumber { get; set; }
[ForeignKey("flightNumber")]
public virtual Flight flight { get; set; }
public string FirstName { get; set; }
public string SecondName { get; set; }
public string Nationality { get; set; }
public DateTime DateOfbirthday { get; set; }
public Sex SexOfPassanger { get; set; }
public FlightClass ClassForPassanger { get; set; }
public TicketType TypeOfTicket { get; set; }
}
然後,我創建了一個DbContext
:
class FlightsDatabase : DbContext
{
public DbSet<Flight> Flights { get; set; }
public DbSet<Flight> FlightsArchive { get; set; }
public DbSet<Passenger> Passengers { get; set; }
}
當我嘗試使用此代碼:
using (FlightsDatabase flights = new FlightsDatabase())
{
foreach (Flight flight in flights.Flights)
{
if (Math.Abs((flight.Departure - DateTime.Now).Days) <= 1)
{
timeCame(flight, null);
}
if (flight.Departure < DateTime.Now)
{
flightsToClean.Add(flight);
}
}
moveOldFlights(flightsToClean, null);
}
我得到這個錯誤,不支持每個類型
多個對象集。對象集「Flights」和「FlightsArchive」都可以包含「Project_Airline_Info.Models.Flight」類型的實例。
所以我的問題是如何在DbContext類中創建2個具有相同泛型的DBsets。
我做了這樣的事情,但是當我查看日誌時,當查詢只有一個具有共同基類的DbSet時,EF正在爲數據庫生成兩個查詢。你知道爲什麼嗎? – yosbel
不知道,我不得不看你的代碼/配置甚至猜測。 – DavidG