我在使用 Entity Framework 时遇到了一些严重的问题,我似乎无法弄清楚发生了什么。
我尝试了以下提供的许多选项:MetadataException:无法加载指定的元数据资源和著名的 Craig Stuntz 的博客文章位于:http: //blogs.teamb.com/craigstuntz/2010/08/13/38628/
为简洁起见,我有 3 个项目:
Funscribe.Data(EDMX 文件位于此处)
Funscribe.Console(控制台应用程序)
Funscribe.Web(MVC 3 应用程序)
最初它只是 MVC 应用程序,我最近添加了这个新的控制台项目。
我从 web.config 复制了连接字符串并将其应用于我的 app.config:
<add name="FundirectoryEntities" connectionString="metadata=res://*/Fundirectory.csdl|res://*/Fundirectory.ssdl|res://*/Fundirectory.msl;provider=System.Data.SqlClient;provider connection string="data source=localhost\sqlexpress;initial catalog=Funscribe;user id=sys_Funscribe;password=blah;multipleactiveresultsets=True;application name=EntityFramework"" providerName="System.Data.EntityClient" />
我的 mvc 应用程序继续工作,但是当我运行控制台应用程序时,我得到了可怕的:
“无法加载指定的元数据资源。”
我尝试将连接字符串更改为通配符设置:
<add name="FundirectoryEntities" connectionString="metadata=res://*/;provider=System.Data.SqlClient;provider connection string="data source=localhost\sqlexpress;initial catalog=Funscribe;user id=sys_Funscribe;password=blah;multipleactiveresultsets=True;application name=EntityFramework"" providerName="System.Data.EntityClient" />
我得到: 在映射和元数据信息中找不到指定的默认 EntityContainer 名称“FundirectoryEntities”。
我尝试更改它以指定程序集:
<add name="FundirectoryEntities" connectionString="metadata=res://Funscribe.Data.dll/Fundirectory.csdl|res://Funscribe.Data.dll/Fundirectory.ssdl|res://Funscribe.Data.dll/Fundirectory.msl;provider=System.Data.SqlClient;provider connection string="data source=localhost\sqlexpress;initial catalog=Funscribe;user id=sys_Funscribe;password=blah;multipleactiveresultsets=True;application name=EntityFramework"" providerName="System.Data.EntityClient" />
我得到: 无法解析程序集“Funscribe.Data.dll”。
我不知道我应该在这里做什么。我刚刚将此项目升级到 Visual Studio 2012(我在转换到 VS 2012 后引入了这个新的控制台应用程序)。
我还注意到 Funscribe.Data.dll 位于控制台项目的 bin 文件夹中,我手动删除了这些文件并观察它被重新创建。令我困惑的是网络应用程序继续正常工作!
所有项目都在 .NET 4.0 上。控制台应用程序使用 .NET 4.0 而不是客户端配置文件版本。
非常感谢您对此事的任何帮助。