2012-02-01 87 views
1

我有一些問題,但我會從第一個和最小開始。我有兩個有許多關係的模型,分類和項目。在每個模型中,我都有另一個模型的ICollection。我將該集合初始化爲項目構造函數的新HashSet(),反之亦然。我在網上讀到,這將在您的數據庫中創建一個新表格,每個模型的PK作爲新表格中的PK。我自定義命名他們和通過Fluent API什麼都沒有,但你明白了。ASP.NET MVC實體框架CodeFirst多對多(CRUD)

這工作出色。所以我讓我的控制器和創建和使用腳手架來創建CRUD視圖。我創建了幾個類別..很好。現在,當我開始創建一個新項目時,我想要的是向我展示我以前創建的類別列表,並且在推送項目之前至少要選擇一個。該視圖顯示根本沒有選擇的類別,並允許它作爲空白。我知道如何製作所需的財產,但我不知道如何製作所需的集合財產,並從數據庫中抓取所有類別以顯示在項目創建視圖中以便選擇....

+0

你做了一個包括你的導航屬性? – 2012-02-01 23:44:01

+0

不,我沒有。我會在哪裏放這個? – 2012-02-01 23:46:05

回答

2

嘗試:

Context.Project.Include(p=>p.Category) 

您的查詢代碼中,

你需要

using System.Data.Entity; 

獲得包括方法

+0

這工作。真棒。謝謝! – 2012-02-02 01:42:17

+1

沒問題,你需要這個的原因是因爲開箱即用的EF不支持延遲加載,所以當你明確地告訴它時它實際上只加載FK引用 – 2012-02-02 19:35:21

0

爲了啓用延遲加載,您還需要將屬性標記爲「虛擬」;否則,您將始終不得不使用.Include()方法加載它們。