2013-11-21 141 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

相关问题