无法在app.config中找到实体框架连接字符串

时间:2013-11-21 19:06:39

标签: c# .net wpf entity-framework

我有一个异常的catch,它将异常写入消息框。我一直遇到的异常是“System.InvalidOperationException:在应用程序配置文件中找不到名为'NameOfEntities'的连接字符串。在...”

之后,它注意到我正在尝试在我的代码中的三个特定行上使用实体上的LINQ to Entities,而这正是错误源自的地方。

在这些行中,有非常简单的LINQ语句,如:

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

我已经尝试过它作为一个可枚举的列表,它没关系...仍然出现错误。当我运行它,构建它时,以及我只是编辑代码时,可能会发生错误。

我的配置文件中有一个名为“NameOfEntities”的连接字符串,位于<connectionStrings>标记之间,this post suggests

.edmx位于解决方案中的另一个项目(类库)中。正如上面链接的示例所示,这应该不是问题,并且我在错误开始出现之前很久就开发了这个系统。

尽可能多的信息,这是完整的错误。消息的格式是易读的:

  

“System.InvalidOperationException:在应用程序配置文件中找不到名为'CnmcEntities'的连接字符串。   在System.Data.Entity.Internal.LazyInternalConnection.get_ConnectionHasModel()   at system.Data.Entity.Internal.LazyInternalContext.InitializeContext()   在System.Data.Entity.Internal.InternalContext.GetEntitySetAndBaseTypeForType(Type entityType)   在System.Data.Data.Entity.Internal.Linq.InternalSet`1.Initialize()   在System.Data.Entity.Internal.Linq.Set`.get_InternalContext()   在System.Data.Entity.Infrastructure.DbQuery`1.System.Linq.IQueryable.get_Provider()   在System.LInq.Queryable.Select [TSource,TResult](IQueryable`source,Expression`1选择器)   at nameOfProject.Model.LiveData..ctor()in c:\ PlaceOfTheProject \ NameOfProject \ Model \ LiveData.cs:第19行   位于c:\ PlaceOfTheProject \ NameOfProject \ ViewModel \ LiveData \ LiveDataViewModel \ ChildViewModels \ DataPointsViewModel.cs:nameOfProject.ViewModel.LiveDataViewModel.InitializeData()in c:\ PlaceOfProject \ NameOfProject \ ViewModel \ 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:

作为“热修复”,而不是将异常写入消息框,我只是吞下了异常。对应用程序没有任何不良影响 - 它仍然访问数据库中的数据。我讨厌这个“解决方案”,但由于吞噬异常似乎没有任何问题,我现在将保留它。

有趣的是,我在捕获代码中设置了一个断点,并且在运行应用程序几次之后它还没有被击中。看起来异常是在关闭应用程序后释放资源时最常发生的事情,因此调试器在遇到此代码时可能不再运行。无论哪种方式,这确实是一个奇怪的事情。

我仍然愿意接受任何有关如何解决问题的具体想法,而不会吞下异常或课程。

1 个答案:

答案 0 :(得分:0)

这个代码是否在库项目中,如果是这样,您将需要在调用库项目的Web应用程序,控制台或Windows应用程序中检查连接字符串。

相关问题