0
我試圖配置這種關係,但是我不能使用Code First。EF6 Code First One to One-Zero
EVENT
Id
...
ScheduleId
SCHEDULE
Id
...
Type
EventId
的事件將永遠有一個時間表,看看它的日期,地點......但時間表可以有一個事件或不依賴於操作系統類型時間表。時間表可以是不同的類型,其中之一是事件。當類型是事件時,EventId字段將指向事件。
所以,我不想創建一個常規的一對一關係,其中一個表是主體,我們使用表Id作爲關係。
在SQL Server中的結果必須是:
EVENT
FK Event.ScheduleId -> Schedule.Id -> OnDelete NO Action
SCHEDULE
FK Schedule.EventId -> Event.Id -> OnDelete Cascade
所以,當你刪除事件,相應的調度將被刪除,但如果它被「附加」你不能刪除時間表一個Event,你只能刪除那些EventId = null的SCHEDULES。
我曾嘗試:
On EVENT
HasRequired(p => p.Schedule).WithOptional(a => a.Event).WillCascadeOnDelete(false)
On SCHEDULE
HasOptional(p => p.Event).WithRequired(m => m.Schedule).WillCascadeOnDelete(true);
但它始終把事件PK ID作爲foreing鍵,這不是我想要的。
如何使用EF Code First實現此配置?
在此先感謝。