2010-11-18 9 views
2

大きな問題があります。私がaspを実行しているときに、アプリケーションは次のエラーメッセージで悩んでいます:ASP + EFローディングアセンブリの問題

指定されたスキーマは無効です。エラー:アセンブリ内の タイプ「Data.EF、 バージョン= 1.0.0.0、文化=中立、 なPublicKeyToken = nullの」アセンブリは EdmSchemaAttribute含まれており、 種類の閉鎖がロードされているので、 ロードすることはできません名前で。 名前と属性の両方でロードすると、 は許可されません。

スタックトレース:

[MetadataException:スキーマは が有効ではありません指定されました。エラー:アセンブリは EdmSchemaAttributeが含まれているため アセンブリ内の型「Data.EF、 バージョン= 1.0.0.0、文化=中立、 なPublicKeyToken = nullを」が をロードすることはできません、と 種類の閉鎖がロードされるされます名前で。名前と属性の両方によって ロードが が許可されていません。]
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 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(オブジェクト 送信者、EventArgsのe)の1802
System.EventHandler.Invoke(オブジェクト 送信者、EventArgsのE)+ (のEventArgs E)8864486
System.Web.UI.Control.PreRenderRecursiveInternal() 103 System.Web.UI.P 0
System.Web.UI.Control.OnPreRender年齢。ProcessRequestMain(ブール includeStagesBeforeAsyncPoint、ブール のincludeStagesAfterAsyncPoint)2496

私はまた、すべてのコンテキストの呼び出しとまだ同じ問題の前にLoadFromAssemblyを追加しました。

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

的環境:VS 2010、.NET 4.0、C#が、EF

は、この問題を解決するために、誰かが私を助けてくださいもらえますか?

ありがとうございます。

よろしくお願いいたします。

+0

誰でも助けてくださいましたか??? – ledcomp

+0

この問題の解決策をお探しですか? – Naor

+0

MSDNフォーラムでsimilar topicが見つかりました。役に立ったら嬉しいです。 – 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); 

    } 

それはまだ動作しませんでした私のOnContextCreated()実装が起動していないEntityDataSourceにバインドされたコントロールでDataBind()を呼び出すと、かなり早く気付きました!

これは私が解決策を見つけたのとは異なる問題でした... EntityDataSource宣言のConnectionString属性とDefaultContainerName属性をContextTypeNameに置き換えます。例えば:私のOnContextCreated実装は解雇だろうことを確認したとPOOFは、「名前と属性の両方によってロードが許可されていません」

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

は問題が去っていきました!

+0

私はこれが古い投稿であることを知っています。この部分クラスをどこに追加しましたかを明確にしてください。 – bobetko

0

これは古い投稿ですが、今週はこの問題を2回実行しましたが、少なくとも私の場合はVPNを開いたという事実に関連しているようですこのエンティティprojetに)、このエラーが発生しました。

私はVPNを閉じようとしました...私のプロジェクターを閉じて、もう一度開いてください。しかし、私のコンピュータを再起動すると、正常に機能します。

誰かが同じサーカスでこれを取得する場合、これが役に立ちます。

0

EF 5.0とWCF Data Services 5.2.0を使用して同じエラーメッセージが表示されました。これは、DbContext由来のクラスを使用するデータサービスでした。

私にとっては、コードファーストのEFコードをモデルファーストのEFコードから分離することでした。コードファーストコードを別のアセンブリに移動すると、エラーメッセージが消え、すべてのことが機能しています。私がこれを試してみることができる唯一の方法は、[EdmSchema]属性がEDMXから生成されたコードに存在することです。私たちのモデル(コードファースト)コードには存在しません。

誰かを助ける希望...

0

私は数日間同じエラーを受けていました。私はEntityDataSourceオブジェクトと、同じページのObjectDataSourceなどの他のデータアクセスが混在していました。 EntityDataSourceオブジェクトをObjectDataSourceに置き換えました。問題は消え去った!

関連する問題