2012-01-23 87 views
17

我有一個MVC3項目中內的兩個實體數據模型和B.找不到概念模型類型

我最近增加了新的實體數據模型B到處理一些新的功能,問題是,現在現有的代碼已停止工作,我收到以下錯誤試圖實體模型A.內訪問代碼

錯誤消息時是:

Could not find the conceptual model type 'project.models.Bclass'

我不明白爲什麼它是這一新功能有影響了當前的代碼實體模型A沒有任何改變。而功能B是在一個單獨的類中,並且不會影響模型A.

當從項目中刪除新代碼並排除實體模型B時,代碼將按其應有的方式工作。

下面是一些從錯誤的堆棧跟蹤的:發現

Exception : Could not find the conceptual model type for 'Project1.Models.CrossSession'. 
Application Class - method : System.Data.Metadata.Edm.MetadataWorkspace -- GetEdmSpaceType 
User : temp.user 
Url : http://localhost/project1/auth/message 
Stacktrace : at System.Data.Metadata.Edm.MetadataWorkspace.GetEdmSpaceType(StructuralType objectSpaceType) 
    at System.Data.Entity.Internal.InternalContext.UpdateEntitySetMappings() 
    at System.Data.Entity.Internal.InternalContext.TryUpdateEntitySetMappingsForType(Type entityType) 
    at System.Data.Entity.Internal.InternalContext.GetEntitySetAndBaseTypeForType(Type entityType) 
    at System.Data.Entity.Internal.Linq.InternalSet`1.Initialize() 
    at System.Data.Entity.Internal.Linq.InternalSet`1.get_InternalContext() 
+0

後您添加的代碼來解決,或說明你做了什麼。 – Nix

+0

添加的代碼是使用實體框架和相關類的簡單插入到數據庫。 –

+0

你可以嘲笑你添加的代碼嗎? – Nix

回答

12

解決方案。它在某些情況下(隨機)出現在由entity framework生成的代碼中。這顯然是一個已知的錯誤,修復應該會在未來的版本中發佈。同時解決方法是將efm移至解決方案中的單獨課程。

2

嗯,我剛剛安裝了EF 4.1,並試圖將DbContext與EMDX結合起來 - 當我試圖傳回一個視圖時,我得到了同樣的錯誤 - 這就是爲什麼我最終在這裏......我認爲解決這個問題的方法是將功能分離爲解決方案中的單獨組件...

+1

是的,POCO和EDMX不混合http://social.msdn.microsoft.com/Forums/is/adonetefx/thread/4d9846a0-f890-41df-9444-cf2b4d2bd710 – dtanders

0

使用Visual Studio 12,問題仍未解決。作爲另一種解決方法,我使用「舊式」數據類來設置第二個SQL數據模型,它們是在實體模型之前進行的 - 它們仍然存在,它們仍然可以工作。使用Add - New Item - (Data Category) - LINQ To SQL類,打開ServerExplorer,找到服務器和數據庫,然後將其拖放到數據類窗格中。老派 - 但是當不需要實體模型的全部功能時,可以方便地克服這個非常不方便的問題。

0

我刪除了EDMX車型,取消了實體包,重新安裝實體5.0和作品。

7

一個可能的解釋是,如果您使用數據庫第一種方法並忘記添加實體類,您將得到此錯誤。

即(從下面鏈接的指南)

  1. 右鍵單擊該模型的設計師表面上。
  2. 從上下文菜單中選擇添加代碼生成項目。
  3. 在打開的「添加新項」對話框中,從左側安裝的模板類型列表中選擇數據。
  4. 選擇ADO.NET DbContext生成器,然後單擊添加 按鈕。

我通常使用Julie Lerman的指南; https://msdn.microsoft.com/en-us/library/jj206878(v=vs.113).aspx

+0

我認爲它會在您添加新項目對話框並選擇ADO.NET實體數據模型時爲您自動添加代碼生成項目(.tt文件)。 – Zack

8

我在同一個項目中有兩個不同的.edmx文件有同樣的問題。 對於第一個.edmx model我曾使用"Add Code Generation Item",對於我沒有的第二個模型。該項目正在構建,但在運行時拋出該異常。

我解決了爲第二個.edmx model生成.tt類。

1

這也可以通過生成Visual Studio中的新EDMX 2010所以上了年紀的人匹配...(和複製了生成的文件)