我有一个3层项目。
1)Project.Data(EDMX文件)
2)Project.Model(POCO's)
3)Project.Console(控制台应用程序)
我已将连接字符串添加到Project.Console
。
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<connectionStrings>
<add name="ProjectEntities" connectionString="metadata=res://*/Project.csdl|res://*/Project.ssdl|res://*/Project.msl;provider=System.Data.SqlClient;provider connection string="Data Source=PC\SQLEXPRESS;Initial Catalog=Project;Integrated Security=True;MultipleActiveResultSets=True"" providerName="System.Data.EntityClient" />
</connectionStrings>
</configuration>
使用VS2010中的Project.Model
T4模板构建EntityObject
。它使用以下构造函数生成ObjectContext
类:
public ProjectEntities() : base("name=ProjectEntities", "ProjectEntities")
{
this.ContextOptions.LazyLoadingEnabled = true;
OnContextCreated();
}
我只是想在context
中实例化Project.Console
对象:
namespace Project.Console
{
class Program
{
static void Main(string[] args)
{
ProjectEntities pe = new ProjectEntities();
}
}
}
但是,我在构造函数中遇到MetadataException was unhandled
错误。说明Unable to load the specified metadata resource.
我做了大量的研究(谷歌搜索),发现它似乎是这些资源的链接问题。我似乎无法找到解决方案。
感谢任何帮助。
答案 0 :(得分:8)
我一会儿写了一篇冗长的guide to debugging this error。
答案 1 :(得分:3)
使用任何资源查看器(例如,RedGate .NET Reflector)打开您的程序集,并检查元数据资源的名称是否与您在app.config中指定的名称相同。
答案 2 :(得分:0)
请用您的project.data程序集替换*,如下所示
<add name="ProjectEntities" connectionString="metadata=res://Project.Data/Project.csdl|res://Project.Data/Project.ssdl|res://Project.Data/Project.msl;provider=System.Data.SqlClient;provider connection string="Data Source=PC\SQLEXPRESS;Initial Catalog=Project;Integrated Security=True;MultipleActiveResultSets=True"" providerName="System.Data.EntityClient" />