2010-09-13 15 views
53

對於新項目,我試着先創建自己的業務類,然後再創建真正的數據庫表。因此我使用的是Entity Framework 4 Designer。創建了一個新的「ADO.Net實體數據模型」文件,擴展名爲.edmx。如何在Entity Framework 4 Entitydesigner中的兩個對象之間正確設置關聯?

我創建了兩個實體:
alt text

我想補充的產品之間有1到NC關係 - >集團。如果我首先創建了MSSQL數據庫,那麼我會將一個列IDGroup添加到Table Product並將引用的Product.IDGroup添加到Group.IDGroup。據我所看到的,我不能在設計中添加這樣的協會,如果我加入一個名爲IDGroup新屬性的產品實體

這是我如何添加映射: alt text

導致:
alt text

現在是什麼這個問題是關於部分:如果我從一個現有的MSSQL數據庫的EDMX文件中添加兩個表,我會得到編譯錯誤:

Error 3027: No mapping specified for the following EntitySet/AssociationSet - GroupSet, ProductSet 

這個錯誤是什麼意思,我該怎麼做才能解決這個問題? 如果我刪除這兩個表,我會收到一個警告,而不是:

Error 2062: No mapping specified for instances of the EntitySet and AssociationSet in the EntityContainer myContainer. 

東西告訴我,我這樣做是完全錯誤的,這僅僅是基本的東西。我該怎麼做對不對?

+1

+1感謝您提出這個問題,我經常忘記這麼做。 – 2011-08-03 16:36:05

回答

85

我剛碰到這個我自己&當我谷歌搜索它(我打你的問題)。

我能夠在設計器中雙擊線(關聯線)。填寫在那裏的屬性,我得到它的工作。

我也不得不關閉VS和重新打開它得到一些報道走開錯誤的...

不能說這是正確的答案 - 只是摸索周圍,並似乎取得結果。

+2

謝謝!我正在瀏覽Properties and Mapping,並以不同的方式創建鏈接,但無論我做了什麼,我都無法讓錯誤消失。我從來沒有想過要雙擊鏈接。 – Rachel 2011-05-12 19:47:24

+4

我雙擊鏈接並設置參考約束 - 但錯誤依然存在。重新啓動VS 2010並再次設置參考約束也有訣竅。 – Jesslyn 2012-06-29 12:42:43

+4

很好的答案。我很驚訝地看到,我需要關閉並重新打開VS才能使其正常工作,即使在正確執行其他所有操作之後也是如此。 實體框架非常棒,除非它不是! – 2013-04-12 14:59:00

3

我有同樣的錯誤,並且「添加關聯」對話框沒有幫助我設置的一位配置是「參照約束」屬性。一旦我配置了我重建的解決方案,一切都很酷。

6

當我使用安裝了EF4.1的VS2010 SP1下的ADO.Net DBContext生成器從數據庫生成模型時,出現此錯誤。我使用的數據庫在主鍵字段和外鍵字段之間沒有任何參照完整性。

解決的辦法是雙擊會出現參考對話框對話框的關聯線。然後,我將Principal字段設置爲包含主鍵的表,具有外鍵的Dependent作爲表,將外鍵名設置爲在下拉列表中匹配並單擊確定。

然後編譯代碼,我可以在使用 var foreign = DBContext.Primary.First()的實體上工作。外交部等

史蒂夫

9

東西可能很容易錯過是從模型生成數據庫。根據我的理解,在對數據庫.edmx所做的每一項更改之後都必須執行此操作。

這種簡單的錯誤發生在我身上,並導致挫折幾分鐘=)

0

我有這個錯誤,當我已經刪除從模型圖的關聯,但關聯仍然在底層的XML .edmx。他們只是我發現解決的方法是手動編輯edmx以刪除對違規關聯的引用。

0

您只需要從edmx文件中刪除所有表格。現在右鍵單擊edmx文件並選擇更新表單數據庫選項。更新Ef,問題將得到解決。

0

我正在使用數據庫第一種方法,並遇到同樣的問題。

什麼是導致問題是我的同事從數據庫中刪除了一個表,忘記了更新模型。

我的解決方案從圖中找到已刪除的實體。 (模型瀏覽器可能很有用。) 然後從圖中刪除它,因爲如果您從數據庫中刪除表,EF不會刪除實體。

生成並檢查錯誤列表窗口(Ctrl + E,W)。

完成。

0

我還發現,在對實體框架上下文和模型進行更改後,重建項目有時可以解決這些錯誤,特別是如果實體框架上下文位於不同的項目中。

相關問題