【问题标题】:ASP + EF loading assembly problemASP + EF 加载程序集问题
【发布时间】:2011-05-11 21:26:28
【问题描述】:

我有一个大问题。当我运行 asp 时,应用程序有时会出现以下错误消息:

指定的架构无效。错误: 程序集“Data.EF”中的类型, 版本=1.0.0.0,文化=中性, PublicKeyToken=null' 无法加载 因为程序集包含 EdmSchemaAttribute,并关闭 类型正在按名称加载。 按名称和属性加载是 不允许。

堆栈跟踪:

[元数据异常:指定架构 无效。错误:中的类型 程序集'Data.EF, 版本=1.0.0.0,文化=中性, PublicKeyToken=null' 无法加载 因为程序集包含 EdmSchemaAttribute,并关闭 类型正在按名称加载。 按名称和属性加载是 不允许。]
System.Data.Metadata.Edm.ObjectItemCollection.LoadAssemblyFromCache(ObjectItemCollection objectItemCollection,程序集 装配,布尔 加载引用程序集, EdmItemCollection edmItemCollection, 行动1 logLoadMessage) +480
System.Data.Metadata.Edm.ObjectItemCollection.ExplicitLoadFromAssembly(Assembly assembly, EdmItemCollection edmItemCollection, Action
1 logLoadMessage) +53
System.Data.Metadata.Edm.MetadataWorkspace.ExplicitLoadFromAssembly(程序集 程序集,ObjectItemCollection 集合,Action1 logLoadMessage) +93 System.Data.Metadata.Edm.MetadataWorkspace.LoadFromAssembly(Assembly assembly, Action1 logLoadMessage) +130 System.Web.UI.WebControls.EntityDataSourceView.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.UI.WebControls.CompositeDataBoundControl.CreateChildControls() +75 系统.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(对象 发件人,EventArgs e) +1802
System.EventHandler.Invoke(对象 发件人,EventArgs e) +0
System.Web.UI.Control.OnPreRender(EventArgs e) +8864486
System.Web.UI.Control.PreRenderRecursiveInternal() +103 System.Web.UI.Page.ProcessRequestMain(布尔值 includeStagesBeforeAsyncPoint,布尔值 includeStagesAfterAsyncPoint) +2496

我还在每次上下文调用之前添加了 LoadFromAssembly,但仍然是同样的问题。

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

环境:VS 2010、.NET 4.0、C#、EF

有人可以帮我解决这个问题吗?

提前致谢,

最好的问候。

【问题讨论】:

标签: c# asp.net visual-studio-2010 entity-framework .net-4.0


【解决方案1】:

我好几天都遇到同样的错误。我使用的是 EntityDataSource 对象和其他数据访问(例如同一页面中的 ObjectDataSource)的混合。将 EntityDataSource 对象替换为 ObjectDataSource。问题消失了!

【讨论】:

    【解决方案2】:

    我在使用 EF 5.0 和 WCF Data Services 5.2.0 时看到了相同的错误消息。这是一个使用DbContext-派生类的数据服务。

    对我来说,解决方法是将代码优先的 EF 代码与模型优先的 EF 代码分开。通过将代码优先代码移动到单独的程序集中,错误消息消失并且一切正常。我能想出尝试这个的唯一方法是 [EdmSchema] 属性存在于我们的 EDMX 生成的代码中;但它在我们的模型(代码优先)代码中不存在。

    希望对某人有所帮助...

    【讨论】:

      【解决方案3】:

      这是一篇旧帖子,但我本周已经两次遇到这个问题,至少在我的情况下,这似乎与我打开了一个 VPN 的事实有关(对于一个完整的其他任务,没有链接到这个实体项目),然后发生了这个错误。

      我试图关闭我的 VPN...然后关闭我的项目并重新打开,完全关闭我的 VS,但没有任何成功。但是,重新启动我的计算机使其恢复正常。

      如果有人在相同的情况下遇到此问题,希望这会有所帮助。

      【讨论】:

        【解决方案4】:

        我在混合有 EntityDataSource 对象和其他数据访问(例如 ObjectDataSource 和/或命令式代码)的页面上收到相同的错误。

        我采纳了您问题的另一个答案中引用的 MSDN 文章的建议。 IE。使用 context.MetadataWorkspace.LoadFromAssembly(...)。我实际上不知道如何获取对 EntityDataSource 使用的上下文实例的引用,我想我还是应该把它干掉,所以我创建了一个部分类,例如:

            public partial class YourTypeNameEntities
        {
            partial void OnContextCreated()
            {
                this.MetadataWorkspace.LoadFromAssembly(typeof(Full.Namespace.Of.YourTypeNameEntities).Assembly);
        
            }
        

        它仍然没有工作,但我很快注意到在绑定到 EntityDataSource 的控件上调用 DataBind() 时,我的 OnContextCreated() 实现没有触发!

        这是一个不同的问题,我找到了解决方案...将 EntityDataSource 声明中的 ConnectionString 和 DefaultContainerName 属性替换为 ContextTypeName。例如:

            <asp:EntityDataSource ID="CountrySource" runat="server" 
        ContextTypeName="Full.Namespace.Of.YourTypeNameEntities" EntitySetName="Country" 
        OrderBy="it.Name" Where="it.Active==true">
        

        确保我的 OnContextCreated 实现会触发并且 POOF,“不允许同时按名称和属性加载”问题消失了!

        【讨论】:

        • 我知道这是旧帖子。你能澄清一下你是在哪里添加这个部分类的吗?
        猜你喜欢
        • 1970-01-01
        • 2023-04-05
        • 1970-01-01
        • 1970-01-01
        • 2015-12-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多