突然间,我一直MetadataException在实例化我生成的ObjectContext类.App.Config中的连接字符串看起来是正确的 - 自上次工作以来没有改变 - 我尝试从底层数据库重新生成一个新模型(edmx文件)而没有任何变化.
有人有主意吗?
更多细节:我没有更改任何属性,我没有更改任何输出程序集的名称,我没有尝试在程序集中嵌入EDMX.我离开工作只等了10个小时,直到我回来.然后它不再工作了.
我试过重新创建EDMX.我试过重新创建这个项目.我甚至尝试从头开始重新创建数据库.没有运气,无论如何.
我希望有人可以帮忙解决这个问题.我试过在这里关注其他帖子和其他几十个网站,但我可以让这个工作.
实体框架全部工作,然后第二天才开始给我错误:无法加载指定的元数据资源.在实体类的构造函数上.
我检查了连接字符串,删除并重新添加了所有内容,但我仍然无法使其工作.
我的模型命名空间是WraithNath.co.uk.Models
元数据artificat嵌入在程序集中
我的连接字符串如下:
<add name="ConnectionString" connectionString="Data Source=.\SQL2008;AttachDbFilename=|DataDirectory|\WraithNath.co.uk.mdf;Integrated Security=True;" providerName="System.Data.SqlClient" />
<add name="Entities" connectionString="metadata=res://*/Models.WraithNath.co.uk.csdl|res://*/Models.WraithNath.co.uk.ssdl|res://*/Models.WraithNath.co.uk.msl;provider=System.Data.SqlClient;provider connection string="Data Source=.\SQL2008;AttachDbFilename=|DataDirectory|\WraithNath.co.uk.mdf;Integrated Security=True;MultipleActiveResultSets=True"" providerName="System.Data.EntityClient" />
Run Code Online (Sandbox Code Playgroud)
在Reflector中查看时,我无法在程序集中找到我需要的3个文件.
是否有分步指南来解决这个问题?我已经尝试了谷歌前3页的每个链接搜索结果'实体框架无法加载指定的元数据资源'.
我对实体框架有一些严重的问题,我似乎无法弄清楚最新情况.
我尝试了很多选项: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.
非常感谢任何有关此事的帮助.
我决定把Entity Connection String从app.config代码.但是在设置之后如下:
public static string GetConnectionString() {
string connection = "";
SqlConnectionStringBuilder sqlBuilder = new SqlConnectionStringBuilder();
sqlBuilder.DataSource = dbServer;
sqlBuilder.InitialCatalog = dbInitialCatalog;
sqlBuilder.IntegratedSecurity = false;
sqlBuilder.UserID = dbUserName;
sqlBuilder.Password = dbPasswWord;
sqlBuilder.MultipleActiveResultSets = true;
EntityConnectionStringBuilder entity = new EntityConnectionStringBuilder();
// entity.Name = "EntityBazaCRM";
entity.Metadata = @"res://*/Data.System.csdl|res://*/Data.System.ssdl|res://*/Data.System.msl";
entity.Provider = "System.Data.SqlClient";
entity.ProviderConnectionString = sqlBuilder.ToString();
connection = entity.ToString();
return connection;
}
Run Code Online (Sandbox Code Playgroud)
我Unable to load the specified metadata resource.在.Designer.cs中抛出异常.
/// <summary>
/// Initialize a new EntityBazaCRM object. …Run Code Online (Sandbox Code Playgroud)