7

我有一个3层的项目。EF4和连接字符串

1)Project.Data(EDMX文件)
2)Project.Model(POCO的)
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=&quot;Data Source=PC\SQLEXPRESS;Initial Catalog=Project;Integrated Security=True;MultipleActiveResultSets=True&quot;" providerName="System.Data.EntityClient" /> 
    </connectionStrings> 
</configuration> 

Project.Model使用EntityObject T4模板在VS2010建。它会产生一个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

我读了一篇文章,建议克雷格,但我仍然不明朗,我必须把... dll文件引用您的project.data组装?我有一个喜欢你的场景。我假设在Project.Model的app.config?我的上下文和pocos与独立项目中的edm文件分开,就像你的情况,Project.Model一样。 – 2010-10-26 12:39:43

+0

在我的控制台项目中,我需要对我的数据(EDMX)和模型项目的引用。它还需要对System.Data.Entity的引用。 – 2010-10-26 13:49:14

回答

3

使用任何资源查看器(例如,RedGate .NET Reflector)打开您的程序集,并检查元数据资源的名称是否与您在app.config中指定的名称相同。

0

请更换*中包含

<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=&quot;Data Source=PC\SQLEXPRESS;Initial Catalog=Project;Integrated Security=True;MultipleActiveResultSets=True&quot;" providerName="System.Data.EntityClient" />