Я получал ту же ошибку на страницах, где было сочетание объектов EntityDataSource и другого доступа к данным, такого как ObjectDataSource и / или императивный код.
Я воспользовался советом из статьи MSDN, упомянутой в другойответь на твой вопрос.Т.е. использовать context.MetadataWorkspace.LoadFromAssembly (...).Я на самом деле не знал, как получить ссылку на экземпляр контекста, используемый EntityDataSource, и я решил, что в любом случае мне следует его СУШИТЬ, поэтому я создал частичный класс, например:
public partial class YourTypeNameEntities
{
partial void OnContextCreated()
{
this.MetadataWorkspace.LoadFromAssembly(typeof(Full.Namespace.Of.YourTypeNameEntities).Assembly);
}
Это все еще не былоЭто не сработало, но я довольно быстро заметил, что при вызове DataBind () для элемента управления, связанного с EntityDataSource, моя реализация OnContextCreated () не запускалась!
Это была другая проблема, решение которой я нашел ...Замените атрибуты ConnectionString и DefaultContainerName в объявлении EntityDataSource на ContextTypeName.Например:
<asp:EntityDataSource ID="CountrySource" runat="server"
ContextTypeName="Full.Namespace.Of.YourTypeNameEntities" EntitySetName="Country"
OrderBy="it.Name" Where="it.Active==true">
Это обеспечило запуск моей реализации OnContextCreated и POOF, проблема «Загрузка по имени и атрибуту не разрешена» исчезла!