我想了解實體框架,我有一表「用戶」和一張桌子「的頁面」。這些與聯結表「UserPages」具有多對多關係。首先,我想知道是否使用多對多來正確設計這種關係:一個用戶可以訪問多個頁面,每個頁面都可以被多個用戶訪問...,所以我正確使用many2many?瞭解多對多關係和Entity Framework
第二,更重要的是,我已經明白M2M的關係,用戶和頁表不應該重複信息。即每個用戶和每個頁面應該只有一條記錄。但是,在實體框架中,我如何能夠爲同一用戶的同一頁面添加新的訪問?也就是說,我想我可以簡單地使用由LINQ查詢返回的IEnumerable上的Count()方法來獲取用戶訪問特定頁面的次數。
但我看不出這樣做的方式。在Linq to Sql中,我可以訪問聯結表並在其中添加記錄,以反映特定用戶對特定頁面的訪問次數,儘可能多次。但在EF中,我無法訪問聯結表。我只能從用戶轉到網頁集合,反之亦然。
我敢肯定,我誤解關係什麼的,但我只是無法弄清楚如何建模。我總是可以在頁表中的計數列,但據我明白你不應該設計這樣的數據庫表,這些值應該由查詢收集...
請幫助我瞭解什麼我做錯了......
謝謝,但除非我以某種方式誤解了你,這不起作用,我已經試過了。我得到這個異常:「無法更新EntitySet'UserPages',因爲它具有DefiningQuery,並且元素中不存在元素以支持當前操作。」我不太清楚這意味着什麼,因爲我對EF很新穎...... –
Anders
2010-06-02 20:21:44
聽起來像「UserPages」實體映射到「User」和「Page」表之間的連接表。您不需要在模型中包含該實體,而是在「用戶」和「頁面」實體之間創建一個直接的多對多關係。看看這篇文章的更多細節如何做到這一點:http://learnentityframework.com/LearnEntityFramework/tutorials/many-to-many-relationships-in-the-entity-data-model/ – 2010-06-03 08:09:49
嗯,不存在' t模型中的連接表,只有用戶和頁面類。所以UserPages表似乎只能在背景中使用。當我在對話框中創建實體數據模型時,我確實選擇了所有表格,但是我猜想如果我沒有這樣做,關係將不會包含在模型中?但是,即使我選擇了所有表格,連接表格也不包含在生成的模型中... – Anders 2010-06-03 12:49:35