The*_*Guy 18 asp.net-mvc 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" />
Run Code Online (Sandbox Code Playgroud)
我的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" />
Run Code Online (Sandbox Code Playgroud)
我得到: 在映射和元数据信息中找不到指定的默认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" />
Run Code Online (Sandbox Code Playgroud)
我得到: 无法解决程序集'Funscribe.Data.dll'.
我迷失在这里应该做的事情.我刚刚将这个项目升级到Visual Studio 2012(我在转换到VS 2012之后引入了这个新的控制台应用程序).
我还注意到Funscribe.Data.dll位于控制台项目的bin文件夹中,我手动删除这些文件并观察它是否被重新创建.令我困惑的是网络应用程序继续正常工作!
所有项目都在.NET 4.0上.控制台应用程序使用.NET 4.0而不是客户端配置文件verison.
非常感谢任何有关此事的帮助.
Sam*_*ath 21
具有Model.edmx在名为Simple的程序集中调用的Entity Framework模型的应用程序的元数据参数Mvc.Data.dll可能如下所示:
<connectionStrings>
<add name="MyEntities" connectionString="metadata=
res://Simple Mvc.Data.dll/Model.csdl|
res://Simple Mvc.Data.dll/Model.ssdl|
res://Simple Mvc.Data.dll/Model.msl;provider= <!-- ... -->
Run Code Online (Sandbox Code Playgroud)
因此,您可以看到在运行时我们需要的EDMX的三个部分中的每个部分都有一个参考.它们都以相同的方式工作,所以让我们更仔细地检查第一个.CSDL参考如下所示:
res://Simple Mvc.Data.dll/Model.csdl
Run Code Online (Sandbox Code Playgroud)
它指定了三件事:
我们正在从资源加载CSDL.那就是"res://" part.
包含资源的程序集的名称"Simple Mvc.Data.dll".如果您的程序集名称很强,那么您可以在此处指定一个强名称,其中包含所有详细的荣耀.
资源本身的名称,"Model.csdl".不要将其与EDMX或型号名称混淆.在这种情况下,它们碰巧是相同的,除了扩展名,但这并不总是正确的!
如果您的资源没有与您的模型具有相同的名称,或者组件没有碰巧加载,它可能会失败.
有关更多信息,请查看" 实体框架连接字符串疑难解答"
我希望这会对你有所帮助.
| 归档时间: |
|
| 查看次数: |
38019 次 |
| 最近记录: |