代码改变世界

ADO.NET Entity Framework 之“无法加载指定的元数据资源。”

2010-11-15 11:49  Creative dream  阅读(2793)  评论(4编辑  收藏  举报

从ADO.NET Entity Framework发布以来,本人也一直在用,深感好用,忍不住地要感谢微软啊!由于项目结构创建完成后,没怎么改动过,所以一直没出题过问题,可最近由于改动了下命名空间,问题来了,正是标题中的“无法加载指定的元数据资源”。经过百般调试终于解决了,写下做为记录。

  • 开发工具:VS 2010 CN
  • 开发语言:Visual C#
  • ADO.NET Entity Framework
  • 模型名称:Authorize.edmx
  • 实体容器:AuthorizeContainer

先详细说下问题出现的原因:

自从项目创建以来 Authorize.edmx 模型文件一直放在 Model文件夹下

项目一直调试运行,没有出现过错误,最近因项目需要将Model 更名为Models问题随之而来,在调用实体容器构造函数时便出现以下错误:

“无法加载指定的元数据资源”,在这里声明更改命名空间后项目重新生成成功。却突然弹出这么一个错误,刚开始真是一头雾水,没办法,只能解决,重新生成元数据后,很失望没有解决。。。。。

直接说结果吧,在打开App.Config的时候找到了原因,就在这里:

 这个是更改之前的:

代码
<add name="AuthorizeContainer" connectionString="metadata=res://*/Model.Authorize.csdl|res://*/Model.Authorize.ssdl|res://*/Model.Authorize.msl;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=Server;Initial Catalog=EIPS;Persist Security Info=True;User ID=sa;Password=123;MultipleActiveResultSets=True&quot;" providerName="System.Data.EntityClient" />

 

这个是更改之后的:

 

代码
<add name="AuthorizeContainer" connectionString="metadata=res://*/Models.Authorize.csdl|res://*/Models.Authorize.ssdl|res://*/Models.Authorize.msl;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=Server;Initial Catalog=EIPS;Persist Security Info=True;User ID=sa;Password=123;MultipleActiveResultSets=True&quot;" providerName="System.Data.EntityClient" />

就是“metadata=res://*/Models.Authorize.csdl|res://*/Models.Authorize.ssdl|res://*/Models.Authorize.msl;”

metadata:指明.csdl/.ssdl/.msl三个文件的路径

小记:更改模型命名空间一定不要忘了在App.Config中更改.csdl/.ssdl/.msl三个文件的路径,本文能够写出来,全是因自身的基础知识不好,希望大家也多多补充基础知识。