2010-11-18 64 views
2

我有一个很大的问题。当我正在运行asp有时候,应用程序会出现以下错误消息:ASP + EF加载程序集问题

指定的模式无效。错误: 在组件类型“Data.EF, 版本= 1.0.0.0,文化=中性 公钥=空”,因为该组件包含 EdmSchemaAttribute,和 类型的闭合正被加载不能被加载 按名字。 通过名称和属性加载不允许使用 。

堆栈跟踪:

[MetadataException:架构指定 无效。错误:类型 装配“Data.EF, 版本= 1.0.0.0,文化=中性 公钥=空”,因为该组件包含 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系统.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 () +75 System.Web.UI.Control.EnsureChildControls()控制 父,List`1列表,控制根) 119 Telerik.Web.UI.RadAjaxControl.OnPagePreRender(对象 发件人,EventArgs的)1802
System.EventHandler.Invoke(对象 发件人,EventArgs的)+ 0
System.Web.UI.Control.OnPreRender(EventArgs的 E)8864486
System.Web.UI.Control.PreRenderRecursiveInternal() 103 System.Web.UI.P年龄。ProcessRequestMain(布尔 includeStagesBeforeAsyncPoint,布尔 includeStagesAfterAsyncPoint)2496

我也是每个情境呼叫,仍然同样的问题之前添加LoadFromAssembly。

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

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

拜托有人帮助我,要解决这个问题?

在此先感谢,

此致敬礼。

+0

可以请任何人帮忙? – ledcomp 2010-11-18 15:13:45

+0

您是否找到解决此问题的解决方案? – Naor 2011-05-18 21:20:33

+0

我们在MSDN论坛上发现了一个similar topic,希望它有帮助。 – Devart 2010-11-19 09:36:00

回答

3

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

我接受了您的问题的其他答案中引用的MSDN文章的建议。即使用context.MetadataWorkspace.LoadFromAssembly(...)。其实,我不知道怎么去用EntityDataSource使用的上下文实例的引用,我想我应该反正干吧,所以我创建了一个局部类如:

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

    } 

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

这是我找到解决方案的另一个问题......用EntityDataSource声明中的ContextTypeName替换ConnectionString和DefaultContainerName属性。例如:

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

这让相信我的OnContextCreated实现将火和噗,在“按名称和属性,则不允许加载”问题就走了!

+0

我知道这是旧帖子。你能否澄清一下你在哪里添加了这个部分课程? – bobetko 2012-02-09 15:04:41

0

这是一个旧帖子,但本周我遇到过这个问题两次,至少在我看来,这与我打开一个VPN的事实有关(对于没有链接的完整的其他任务到这个实体projet)然后,这个错误发生了。

我试图关闭我的VPN ...然后关闭我的projet并重新打开,完全关闭我的VS没有任何成功。但是,重新启动我的电脑使其恢复工作。

希望这有助于如果有人在相同circonstences得到这个。

0

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

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

希望可以帮助别人...

0

我得到的日子相同的错误。我使用的是EntityDataSource对象和其他数据访问(如ObjectDataSource)在同一页面中的混合。用ObjectDataSource替换了EntityDataSource对象。问题消失了!