2015-10-15 119 views
0

這是我的問題。我有2個模型(Person,Event),並且使用EF和modelbuilder生成預訂表(使用IdPerson和IdEvent作爲屬性)。 所以在我的數據庫中是正確的,我有3個表(人員,事件和預訂)與多對多的關係。但是我在Visual Studio中只有2個模型(由於自生成的表,Booking不存在)。 隨着我的控制器,我想寫一個動作爲人訂閱一個事件,我必須寫在我的表上預訂在數據庫上,但它不存在作爲一個模型,所以我不能這樣做。 我應該如何處理? 我應該創建預定模型並刪除模型構建器嗎?具有多對多關係的實體框架

+0

人都應該有一個事件列表(列表),添加要訂閱該名單 – Domysee

+0

我已經該事件,但我的問題是如何能我訪問我的數據庫中的表預訂,如果它不存在作爲類(模型)。 在我的控制器中,我需要執行一個動作,從Person獲取id,然後將其作爲新預訂寫入db表預訂中。 – Xr4y

回答

0

當您使用EF等ORM時,您可以坐下來讓ORM管理這些中間表。

您可以使用

person.Events.Add(event)

event.People.Add(event)

和EF處理所有和插入與該表personIdeventId一行。

在這裏你可以找到一個完整的示例: http://blogs.msdn.com/b/wriju/archive/2011/05/14/code-first-ef-4-1-building-many-to-many-relationship.aspx

+0

非常感謝,我會嘗試 – Xr4y

+0

我理解了這個概念,但是如何從我想要放入EventModel的用戶獲取ID? – Xr4y

+0

換句話說,我有一個PersonI與UserId連接,並且我需要獲得該ID才能進行預留 – Xr4y

0

我假設這是模型的第一種方法。

只有2個對象的原因是,默認情況下,EF不會爲聯合表創建對象。它的功能是導航屬性(Entity Framework - Navigation Property Basics)。在一對多場景中,父對象內的導航屬性包含外/子表中的實體集合。在多對多的情況下,每個實體的導航屬性將僅包含其他實體的集合。