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" />