@Cobusve有正確的想法:Bus
和Seat
是具體的對象;沒有理由不應該給你的數據庫一個相當永久的記錄。 Trip
以及指定Passenger
s到Seat
s對於給定的行程(您給出的關係非常合適的名稱Booking
)都是抽象的,瞬態,概念。 (實際上,你應該考慮一個Passenger
表,並把這些記錄的大多是永久性的,像Bus
和Seat
)
Bus
和Seat
顯然有0or1一對多的關係(即,每個人都可以有獨立的其他,Seat
有一個可空的外鍵BusId,在EF中,Bus
有ICollection
的Seat
,這可能是空的),並且可以隨時設置。Trip
和Booking
,顯然你會在你做任何預訂之前建立一個旅程–你甚至可以提前創建旅程,甚至在你開始預訂之前爲潛在的乘客提供即將到來的時間表。
現在,什麼是Booking
呢?支付預訂是Passenger
具有特定Seat
對於給定Trip
關聯:
class Booking
{
public virtual Passenger Passenger { get; set; }
public virtual Trip Trip { get; set; }
public virtual Seat Seat { get; set; }
}
,並添加Booking
的ICollection
到Trip
。而已。按照慣例,EF 6將檢測的Booking
Passenger
,Trip
和Seat
作爲外交關係,並會隱式創建的Booking
表爲他們的外鍵。
你可以做一些其他的事情,無論是與[Required]
或映射(1)保證預訂的主鍵是這三個外鍵(2)級聯與相關聯的所有Booking
S的刪除的組合鍵Trip
與Trip
的刪除,但是這回答了您問起有關如何與Booking
s和Seat
s應該有關的原始問題。
特別,不過,對於一個計時器,自動刪除一趟,你應該更故意的吧:機會是你想要的旅行細節以某種方式捕捉–說的計費或審計–和不當行程結束時間過去時,希望旅程從數據庫中消失。
巴士和預訂之間的關係是什麼? –
在我的情況下,座位和預訂之間的關係,我不預訂巴士。 –