我試圖先用代碼和流利的API來創建一個對象,該對象包含來自同一個表的兩個不同實體。換句話說,轉移對象可以提供兩個不同的坦克對象 - 一個是來源,另一個是目的地。從一個對象到兩個相同實體類型的對象的多個關聯
但是,當我使用下面的代碼時,我得到一個異常,指出「引用關係將導致不允許的循環引用」。
modelBuilder.Entity<Transfer>()
.HasRequired<Tank>(t => t.Source)
.WithMany(t => t.OutboundTransfers);
modelBuilder.Entity<Transfer>()
.HasRequired<Tank>(t => t.Destination)
.WithMany(t => t.InboundTransfers);
我最好的猜測是它認爲我指向兩個鍵到同一坦克?任何想法我可以做到這一點?
編輯:找到答案,因爲從Entity Framework Code First - two Foreign Keys from same table
是的,當兩個導航屬性指向同一個表時,您不能讓EF 4.1啓用級聯刪除約束。要啓用適當的約束,您需要使用Seeding對象手動將它們添加到數據庫中以執行適當的腳本。 – 2011-05-17 11:54:21
就是這樣,就像你發現的那樣,亞歷山大也指出。在MSSMS上手動執行它將引發錯誤「無法創建關係(...)可能會導致循環或多個級聯路徑。指定ON DELETE NO ACTION或ON UPDATE NO ACTION,或修改其他FOREIGN KEY約束。 – 2012-09-18 22:42:11
您可以將您的解決方案作爲答案加以標記嗎? – sinelaw 2012-10-17 01:26:10