我有一个异常的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="data source=SERVERSOURCE;initial catalog=NameOfInitialCatalog;persist security info=True;user id=UserId;password=Password;MultipleActiveResultSets=True;App=EntityFramework"" providerName="System.Data.EntityClient" />
</connectionStrings>
编辑1:
作为“热修复”,而不是将异常写入消息框,我只是吞下了异常。对应用程序没有任何不良影响 - 它仍然访问数据库中的数据。我讨厌这个“解决方案”,但由于吞噬异常似乎没有任何问题,我现在将保留它。
有趣的是,我在捕获代码中设置了一个断点,并且在运行应用程序几次之后它还没有被击中。看起来异常是在关闭应用程序后释放资源时最常发生的事情,因此调试器在遇到此代码时可能不再运行。无论哪种方式,这确实是一个奇怪的事情。
我仍然愿意接受任何有关如何解决问题的具体想法,而不会吞下异常或课程。
答案 0 :(得分:0)
这个代码是否在库项目中,如果是这样,您将需要在调用库项目的Web应用程序,控制台或Windows应用程序中检查连接字符串。