Проблема метаданных Entity Framework - PullRequest
1 голос
/ 28 июля 2011

Использование EF 4.0.У меня есть две модели сущностей, обе называются CoreEntities, но в разных сборках и в разных пространствах имен.

Если у меня один проект, который ссылается на обе сборки, EF, похоже, запутывается в том, какие надлежащие артефакты метаданных загрузитьявляются.

В частности, я получаю ошибки, такие как:

The EntitySet name 'CoreEntities.MyEntities' could not be found.

Как только удалить ссылку на одну из сборок, ошибки перестают происходить.

I 'Я не уверен, имеет ли это значение, но я использую следующий код для генерации моей строки подключения:

public static string BuildEntityConnectiongString(string entityContextName)
{
    //Format: metadata=res://*/{EntityContext}.csdl|res://*/{EntityContext}.ssdl|res://*/{EntityContext}.msl;provider=...
    string rawString = System.Configuration.ConfigurationManager.ConnectionStrings["GenericEntityConnectionString"].ConnectionString;
    return rawString.Replace("{EntityContext}", entityContextName);
}

Как EF определяет, в какой сборке искать внедренные метаданные?Можно было бы подумать, что он всегда будет выглядеть в сборке, которая сначала содержит модель, но, видимо, это не так, как она работает.

Идеи?

1 Ответ

1 голос
/ 28 июля 2011

Как обычно, быстрый просмотр документации дает ответ:

http://msdn.microsoft.com/en-us/library/cc716756.aspx

По сути, подстановочный знак в res: // * / говорит EF искать метаданные во всех загруженных сборках. Первое, что он находит, что соответствует, он использует.

В моем случае сначала он находит неправильный.

Разрешение этого заключается в том, чтобы изменить мою функцию BuildEntityConnectiongString (и общую строку подключения, которую я использую), чтобы позволить мне явно указывать имя сборки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...