2011-09-25 48 views
6

enter image description here實體框架試圖檢索不存在的列

我試圖從數據庫中檢索的VideoCollection項目,但得到{"Invalid column name 'User_Id'."} - 當我設置一個斷點,我可以看到的是,EF試圖選擇user_id列但它不在Cs對象或數據庫模式中。 (它確實存在於另一個表中,但這不重要)。無論如何調試爲什麼會發生這種情況?

回答

9

你有一個用戶類有一個VideoCollection的引用?如果是這樣,你可能需要明確定義兩者之間的關係。實際上,EF看起來像是推斷VideoCollection應該包含一個外鍵,User_Id定義了這種關係。

+0

你幾乎在那裏 - 我有一箇中間表PurchasedCollections - 具有UserId和VideoCollectionId(都作爲外鍵)。這應該明確定義關係?我從Cs對象和DbContext中刪除了這個中介(因爲我不需要直接訪問它)。這可能會導致問題嗎? – greenimpala

+2

@ st3您需要將表格重命名爲User_VideoCollections或重寫OnModelCreating並通過PurchasedCollections表格明確建立連接。 EF(代碼優先)約定期望您有直接的FK關係或使用實體名稱的連接表。如果你偏離了這一點,你需要告訴它如何建立連接。就像'builder.Entity ().HasMany(u => u.Collections).WithRequired()。ToTable(「PurchasedCollections」);' – tvanfosson

+0

這似乎奏效了,謝謝。你是否說要用這個命名約定聲明任何多對多的關係(除非你明確定義關係?)。 – greenimpala