2010-11-18 3 views
2

У меня большая проблема. Когда я запускаю asp ИНОГДА, приложение работает со следующим сообщением об ошибке:Проблемы с загрузкой ASP + EF

Указанная схема недействительна. Ошибки: типы в сборке «Data.EF, Version = 1.0.0.0, культура = нейтральной, PublicKeyToken = NULL» не может быть загружен , так как сборка содержит EdmSchemaAttribute и закрытие типов загружается по имени. Загрузка по имени и атрибуту не разрешена.

Трассировка стека:

[MetadataException: Схема указанный не является действительным. Ошибки: Типы в Ассамблеи «Data.EF, Version = 1.0.0.0, культура = нейтральной, PublicKeyToken = NULL» не может быть загружен , так как сборка содержит EdmSchemaAttribute, и закрытие типов загружается по имени. Загрузка оба именем и атрибут не допускается.]
System.Data.Metadata.Edm.ObjectItemCollection.LoadAssemblyFromCache (ObjectItemCollection objectItemCollection, Сборочные сборки, булевы loadReferencedAssemblies, EdmItemCollection edmItemCollection, Действия logLoadMessage) +53
System.Data.Metadata.Edm.MetadataWorkspace.ExplicitLoadFromAssembly (монтаж сборки, ObjectItemCollection коллекция, Приключения 1 logLoadMessage) +93 System.Data.Metadata.Edm.MetadataWorkspace.LoadFromAssembly(Assembly assembly, Action 1 logLoadMessage) +130 System.Web.UI.WebControls.EntityDataSource View.ConstructContext() +585 System.Web.UI.WebControls.EntityDataSourceView.ExecuteSelect (DataSourceSelectArguments аргументы) +76
System.Web.UI.DataSourceView.Select (DataSourceSelectArguments аргументы, DataSourceViewSelectCallback обратного вызова) +21 System .Web.UI.WebControls.DataBoundControl.PerformSelect() +143 Telerik.Web.UI.GridTableView.PerformSelect() +38 System.Web.UI.WebControls.BaseDataBoundControl.DataBind() +74 Telerik.Web.UI .GridTableView.DataBind() +363 Telerik.Web.UI.RadGrid.DataBind() +173 System.Web.UI.WebControls.BaseDataBoundControl.EnsureDataBound() +66 System.Web.U I.WebControls.CompositeDataBoundControl.CreateChildControls() +75 (System.Web.UI.Control.EnsureChildControls) +102 (Telerik.Web.UI.GridBaseDataList.get_Controls) +33 (Telerik.Web.UI.RadAjaxControl.PopulatePlainPanels Контроль родитель, список List`1, корень управления) +119 Telerik.Web.UI.RadAjaxControl.OnPagePreRender (Object отправителя, EventArgs е) +1802
System.EventHandler.Invoke (Object отправителя, EventArgs е) + 0
System.Web.UI.Control.OnPreRender (EventArgs е) +8864486
System.Web.UI.Control.PreRenderRecursiveInternal() +103 System.Web.UI.P возраст.ProcessRequestMain (Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +2496

Я также добавил LoadFromAssembly перед каждым контекстом вызова и до сих пор с той же проблемой.

context.MetadataWorkspace.LoadFromAssembly(context.GetType().Assembly); 

Enviroment: VS 2010, .NET 4.0, C#, EF

Может понравиться кто-нибудь помочь мне, чтобы решить эту проблему?

Заранее благодарен,

С уважением.

+0

может понравиться кому-нибудь помочь ??? – ledcomp

+0

Вы нашли решение этой проблемы? – Naor

+0

Мы нашли similar topic на форумах MSDN, надеемся, что это поможет. – Devart

ответ

3

Я получаю ту же ошибку на страницах, где была смесь объектов 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 реализация будет стрелять и пуф, то «Загрузка обоими именем и атрибутом не допускается» проблема ушла!

+0

Я знаю, что это старый пост. Не могли бы вы уточнить, где вы добавили этот частичный класс? – bobetko

0

Это старое сообщение, но на этой неделе я дважды сталкивался с этой проблемой, и, по крайней мере, в моем случае, по моему мнению, это связано с тем, что я открыл VPN (для полной другой задачи без ссылки к этому объекту projet), а затем эта ошибка произошла.

Я попытался закрыть свою VPN ... затем закройте свой проект и снова откройте, полностью закрывайте VS VS без каких-либо успехов. Но перезагрузка моего компьютера заставляет его работать.

Надеюсь, это поможет, если кто-то получит это в одном и том же состоянии.

0

Я видел такое же сообщение об ошибке, используя EF 5.0 и WCF Data Services 5.2.0. Это была служба данных, использующая класс с пометкой DbContext.

Исправление для меня заключалось в том, чтобы отделить код EF первого кода от первого кода EF. Переместив код-первый код в отдельную сборку, сообщение об ошибке исчезло, и все работает. Единственный способ, с помощью которого я смог выяснить это, заключается в том, что атрибут [EdmSchema] существует в коде, сгенерированном из нашего EDMX; но он не существует в нашем коде (код-первый).

Надеется, что кто-то помогает ...

0

я получаю ту же ошибку, в течение нескольких дней.Я использовал смесь объектов EntityDataSource и другого доступа к данным, таких как ObjectDataSource на той же странице. Заменили объекты EntityDataSource объектом ObjectDataSource. Проблема исчезла!

Смежные вопросы