EF4 и строка подключения - PullRequest
7 голосов
/ 21 октября 2010

У меня трехуровневый проект.

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=&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.

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

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

Ответы [ 3 ]

8 голосов
/ 21 октября 2010

Я написал длинное руководство по устранению этой ошибки некоторое время назад.

3 голосов
/ 21 октября 2010

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

0 голосов
/ 20 июля 2012

Пожалуйста, замените * вашей сборкой 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" />
...