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="Data Source=Server;Initial Catalog=EIPS;Persist Security Info=True;User ID=sa;Password=123;MultipleActiveResultSets=True"" 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="Data Source=Server;Initial Catalog=EIPS;Persist Security Info=True;User ID=sa;Password=123;MultipleActiveResultSets=True"" 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三个文件的路径,本文能够写出来,全是因自身的基础知识不好,希望大家也多多补充基础知识。