7

У меня есть трехуровневый проект.EF4 и соединительная строка

1) Project.Data (EDMX файл)
2) Project.Model()
3) Project.Console (Console приложение Poco в)

Я добавил строку подключения в 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> 

The 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.

Я провел много исследований (Google) и обнаружил, что это проблема связи с этими ресурсами. Кажется, я не могу найти разрешение.

Любая помощь приветствуется.

+0

Я прочитал статью, что Крейг предложил, но я до сих пор неизвестно, где я должен поместить ... DLL ссылку на файл? Мне нравится сценарий. Я предполагаю в app.config Project.Model? У меня есть мой контекст и pocos, отделенные от edm-файла в отдельном проекте, как в вашем случае Project.Model. –

+0

В моем проекте консоли мне нужна ссылка на мои данные (EDMX) и проект модели. Он также потребовал ссылку на System.Data.Entity. –

ответ

3

Откройте сборку, используя любое средство просмотра ресурсов (например, RedGate .NET Reflector) и убедитесь, что имя ресурса метаданных совпадает с именем, указанным в app.config.

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=&quot;Data Source=PC\SQLEXPRESS;Initial Catalog=Project;Integrated Security=True;MultipleActiveResultSets=True&quot;" providerName="System.Data.EntityClient" /> 
Смежные вопросы