我知道这个问题已经被问过很多次了,但我似乎无法弄清问题的根源。我收到以下错误堆栈:
当我反射出我的 dll 时,我可以看到以下内容
阅读 http://blogs.teamb.com/craigstuntz/2010/08/13/38628/它表明我希望在此处看到 csdl、msl 和 ssdl 文件,但事实并非如此。不过,它们确实存在于此处 obj\Debug\edmxResourcesToEmbed。
尽管如此,我还是试图通过这样做明确地告诉 web.config 在哪里查看:
...connectionString="metadata=res://DllName.dll/PaymentModel.csdl|res://DllName.dll/PaymentModel.ssdl|res://DllName.dll/PaymentModel.msl;provider=System.Data.SqlClient;provider ... />
这只是抛出一个错误,说它找不到 dll:
无法解析程序集“DllName.dll”。
与这个 Unresolved SO 问题非常相似 Unable to resolve assembly Model.dll
我尝试的最后一件事是将元数据行更改为:
...connectionString="metadata=res://*/;provider=System.Data.SqlClient;provider ... />
这引发了一条关于我没有使用的 sql ce 的消息 - 有没有办法解决这个问题??
还有什么我可以尝试的吗?或者任何人都可以看到我要去哪里错了吗?一些额外的细节:
使用 EF 6 EDMX 设置为“嵌入式资源”
复制到输出目录:“不要复制”
- 元数据工件处理:“嵌入输出 组装”
最后,如果我将 EDMX 从嵌入式资源设置为 EntityDeploy,那么这将在本地工作,但不会在构建服务器上构建,因为它抛出与这个 SO 问题完全相同的错误:
Could not find the Conceptual Schema node to embed as a resource for input file
但修复似乎没有帮助,不幸的是我无法在服务器上安装 .NET 4.5。
最佳答案
我遇到了同样的问题。 将带有 EF 模型的 .edmx 文件移动到单独的程序集后,提到的错误让我很头疼:“无法加载指定的元数据资源”。
EF 版本 6.1
解决方法:
旧值:
metadata=res://*/Data.DataModel.csdl
新值:
metadata=res://*/DataModel.csdl
最初 .edmx 位于项目的文件夹下,我已将其移动到项目的根目录中。
关于c# - Entity Framework - 无法加载指定的元数据资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23339335/