2013-11-21 148 views
1

我有一個異常情況的例外,它將異常寫入消息框。我不斷遇到的異常說:「System.InvalidOperationException:沒有名爲'NameOfEntities'的連接字符串可以在應用程序配置文件中找到... at」在app.config中找不到實體框架連接字符串

接下來,它指出我正在嘗試使用LINQ到我的代碼中三個特定行上的實體上的實體,這就是錯誤源自的地方。

在這些線路上,有非常簡單的LINQ之類的語句:

IEnumerable<EntityObject> item = (from d in entityVariable.EntityObjects select d).AsEnumerable<EntityObject>(); 

我已經嘗試過作爲一個枚舉,作爲一個列表,也不要緊......仍然顯示錯誤。這個錯誤可能發生在我運行它時,當我構建它時,以及我剛剛編輯代碼時。

我的連接字符串名爲「NameOfEntities」,在我的配置文件中<connectionStrings>標記之間,其中this post suggests

.edmx存在於解決方案中的另一個項目(類庫)中。正如上面的例子所說明的那樣,這不應該是一個問題,並且在錯誤開始出現之前很久以前我一直在用這個系統進行開發。

儘可能多的信息,這裏是完整的錯誤。消息的格式是易讀性:

「System.InvalidOperationException:可以在應用程序配置文件在System.Data.Entity.Internal.LazyInternalConnection.get_ConnectionHasModel沒有找到名爲‘CnmcEntities’連接字符串 ( ) at System.Data.Entity.Internal.LazyInternalContext.InitializeContext() at System.Data.Entity.Internal.InternalContext.GetEntitySetAndBaseTypeForType(Type entityType) at System.Data.Data.Entity.Internal.Linq.InternalSet`1 .Initialize() at System.Data.Entity.Internal.Linq.Set`.get_InternalContext() at System.Data.Entity.Infrastructure.DbQuery`1.System.Linq.IQueryable.get_Provid er() at System.LInq.Queryable.Select [TSource,TResult](IQueryable` source,Expression`1 selector) at NameOfProject.Model.LiveData..ctor()in c:\ PlaceOfTheProject \ NameOfProject \ Model \ LiveData .cs:line 19 at NameOfProject.ViewModel.ChildViewModels.DataPointsViewModel.ctor(LiveDataViewModel thisMainView)in c:\ PlaceOfTheProject \ NameOfProject \ ViewModel \ LiveData \ LiveDataViewModel \ ChildViewModels \ DataPointsViewModel.cs:Line45 at NameOfProject.ViewModel.LiveDataViewModel.InitializeData ()在C:\ PlaceOfProject \ NameOfProject \視圖模型\ LiveDataViewModel \ LiveDataViewModel.cs:行103"

下面是我在App.config(沒有敏感的信息):

<connectionStrings> <add name="NameOfEntities" connectionString="metadata=res://*/Model1.csdl|res://*/Model1.ssdl|res://*/Model1.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=SERVERSOURCE;initial catalog=NameOfInitialCatalog;persist security info=True;user id=UserId;password=Password;MultipleActiveResultSets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" /> </connectionStrings>

編輯1:

「熱補丁」,而不是例外寫一個消息框,我只是吞嚥異常。對應用程序沒有任何不良影響 - 它仍然訪問數據庫中的數據。我討厭這個「解決方案」,但由於目前似乎沒有任何問題沒有吞噬這個例外,所以我現在就保留它。

有趣的是,我在違規代碼的catch中放了一個斷點,並且在多次運行該應用程序之後它還沒有被擊中。在關閉應用程序後,資源釋放最常出現異常,所以也許調試器在遇到此代碼時不再運行。無論如何,這確實是一個奇怪的事情。

對於如何在不吞嚥異常或課程的情況下解決問題的任何具體想法,我仍然持開放態度。

+0

只要連接字符串存在於當前項目的app.config中,就不應該出現這個問題。 – Ric

+0

我同意。但不幸的是,它仍然出現。我添加了我在app.config中的帖子。 – jporcenaluk

+0

不確定在連接字符串中是否需要這些元數據。 –

回答

0

該代碼是否在庫項目中,如果是這樣,則需要在調用庫項目的Web應用程序,控制檯或Windows應用程序中檢查連接字符串。

+0

拋出錯誤的代碼是在不是類庫的項目中。引發錯誤的項目引用類庫,而.edmx文件位於類庫中。 實體框架連接字符串不在類庫的app.config中,而是在引用它的項目的app.config中。 – jporcenaluk

相關問題