2011-09-25 127 views
3

我已經在一些項目中使用了DAL實體框架,但在我現在正在使用的一個項目中,我在類庫項目中使用了edmx文件,這就是項目中的全部內容。我在另一個類庫項目中引用了該項目,出於某種原因,我無法訪問.designer.cs文件中定義的任何實體類。我也無法訪問上下文類。如果我在Visual Studio的對象查看器中查看引用的項目,它不會列出此項目的任何實體。實體框架無法訪問實體類

有誰知道爲什麼我無法訪問另一個項目中的實體類或datacontext?

編輯:如果它有任何區別,它與數據庫上的SQL Azure關聯。

回答

1

我能夠通過刪除現有的edmx文件並重新生成一個新文件來解決它。

顯然,舊的進入一個奇怪的狀態,我無法弄清楚如何讓它再次工作。

0

檢查Context類和Designer.cs類的命名空間。

+0

不可以。它不是命名空間。即使我在實體類下方的designer.cs中創建了一個類,我仍然無法從那裏訪問該實體或上下文。我甚至嘗試刷新並更新edmx文件。 –

+0

確保名稱空間和上下文類名不相同。 –

1

這可能發生在兩種不同的方式。一個是確保實體模型類是公開的。另一種是檢查實體模型名稱空間是否與Context類匹配。

+0

所有的實體類都是public.And也不是命名空間。即使我在實體類下方的designer.cs中創建了一個類,我仍然無法從那裏訪問該實體或上下文。我甚至嘗試刷新並更新edmx文件。 –

1

我已經在幾個項目,但在一個我的工作,現在使用實體框架的DAL,我有一個類庫項目的EDMX文件,這一切有項目。我在另一個類庫項目中引用了此項目,其中我無法初始化實體類的對象,表示未設置連接字符串,在那裏我檢查了連接字符串。\

0

檢查您的繼承DbContext類,它必須公開

+0

此外,您還可以添加屬性命名空間,你希望它是可見的:裝配:InternalsVisibleTo(「ProyectName或命名空間」)。你需要使用指令聚合:using System.Runtime.CompilerServices; 例如: using System.Data.Entity; using System.Runtime.CompilerServices; [組件:InternalsVisibleTo( 「OtherProyect」)] 命名空間Persistence.DAL.EntityFramework { 內部類HotelContext:的DbContext { //代碼 } } –

+0

對不起甲不知道如何使用格式化的代碼。 –