我正在使用 ASP.net MVC5 应用程序和 EF 5 模型优先方法。但也使用了 poco 类,它位于另一个名为“Entity”的 C# 项目中。
我有多层架构,其中 Edmx 文件位于 DAL 层,BAL 引用它,BAL 和实体项目在主 Web 项目中引用。
一切正常,但在 Azure 上设置数据库和项目后,当我的网站尝试连接数据库时,它会抛出以下错误“MetadataException:无法加载指定的元数据资源”
我被一个问题困扰了两天,并尝试了 stackoverflow 或任何其他博客中给出的所有可能的解决方案。但相信我,没有什么比在元数据中提供程序集、dll 的完整路径更能解决我的问题了。使用“metadata=res://*/; 也对我不起作用。我在这里压力很大。
请帮助我。 附上 web.config 中的屏幕截图和连接字符串。
<add name="questmysqlEntities" connectionString="metadata=res://QuestCloud/QuestCloudDAL/QuestCloud.csdl|res://QuestCloud/QuestCloudDAL/QuestCloud.ssdl|res://QuestCloud/QuestCloudDAL/QuestCloud.msl;provider=System.Data.SqlClient;provider connection string="Data Source******servername****;Initial Catalog=questdb;Persist Security Info=True;user id=****username****;password=****password****;MultipleActiveResultSets=True;application name=EntityFramework"" providerName="System.Data.EntityClient" />
我的 Edmx 文件驻留在 DAL(数据库层)项目中,POCO 模板驻留在实体项目中,
BAL(业务层)有两个项目的引用
我的Web项目引用了BAL(业务层)和实体项目
最佳答案
我得到了上述问题的解决方案。我刚刚将“QuestCloudDAL.dll”的引用添加到我的主项目QuestCloud中。并将该程序集的引用放入我的主 web.config 中,
<add name="questmysqlEntities" connectionString="metadata=res://QuestCloudDAL/QuestCloud.csdl|res://QuestCloudDAL/QuestCloud.ssdl|res://QuestCloudDAL/QuestCloud.msl;provider=System.Data.SqlClient;provider connection string="Data Source******servername****;Initial Catalog=questdb;Persist Security Info=True;user id=****username****;password=****password****;MultipleActiveResultSets=True;application name=EntityFramework"" providerName="System.Data.EntityClient" />
我在 we.config 连接字符串中放置了元数据资源的“QuestCloudDAL”命名空间,而不是“*”。它按预期工作。
关于asp.net-mvc - 使用 EF 上传到 azure 后出现问题无法加载指定的元数据资源错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29797153/