0

MVC 4 および Entity Framework 5.0 で開発した Web アプリケーションがあり、.Net 4.5 を使用して正常に動作しました。その後、クライアント ホスティングは .NET 4.5 をサポートしていないため、すべてを .NET 4.0 にダウングレードする必要がありました。エラーが発生していました

Could not load System.Net.Http library or one of its dependencies 

.NET 4.0 を対象とし、NuGet を使用して必要なすべてのパッケージを再インストールする、まったく新しいソリューションとプロジェクトを作成するまでは。

ここでも、ローカルではすべて正常に動作していますが、サーバーにデプロイすると次のエラーが発生します。

Schema specified is not valid. Errors: 
(0,0) : warning 0005: Could not find schema information for the attribute 'Namespace'.
(0,0) : warning 0005: Could not find schema information for the attribute 'Provider'.
(0,0) : warning 0005: Could not find schema information for the attribute 'ProviderManifestToken'.
(0,0) : warning 0005: Could not find schema information for the attribute 'Alias'.
(0,0) : error 0010: The element Schema in namespace http://schemas.microsoft.com/ado/2009/11/edm/ssdl was unexpected for the root element. The expected Schema in one of the following namespaces: http://schemas.microsoft.com/ado/2006/04/edm/ssdl, http://schemas.microsoft.com/ado/2009/02/edm/ssdl.

これで、使用しているすべてのライブラリが .NET 4.0 をターゲットにしていることを確認しました。NuGet は EF 5.0 をインストールし続けましたが、ここで読んだライブラリのバージョンは (4.4) で、.NET 4.0 で問題ないはずです。

どこが間違っているのかわかりませんが、本当にイライラしています。助けていただければ幸いです。EF 4.4 Code First (DbContext および

また、これが違いを生むかどうかはわかりません.CustomMembershipProviderを使用していますが、ローカルで正常に動作しています.現時点では認証にのみ使用しています. 方程式から外すために、その構成を Web.Config から取り出しましたが、それでも同じ問題が存在します。

4

1 に答える 1

1

問題は次の 2 点にあることがわかりました。

  1. モデル (クラス) の 1 つで、同僚が Enum を使用していましたが、これは .NET 4.0 の EF 5.0 ではサポートされていません。この機能は、.NET 4.5 上の EF 5 では機能しますが、.NET 4.0 では機能せず、問題を引き起こしていました。

  2. モデル チェッカーは、EF モデルで現在のデータベースの状態をチェックしようとしたときにも失敗していました。変化はありませんでしたが、確認しただけではまだ失敗していました。それを修正するには、この行を変更する必要がありました

Database.SetInitializer(new DropCreateDatabaseIfModelChanges<ChiptronicsContext>());

次へ

Database.SetInitializer<ChiptronicsContext>(null);

この行は Global.asax.cs にあります。

事実上、この行により EF はデータベースをチェックし、それがモデルと同期していることを確認していたので、ローカルで生成したデータベースの 1 つをサーバーに復元し、それを実行するだけで済みました。スムーズに行きました。これが他の誰かを助けることを願っています。

于 2012-12-25T13:11:21.887 に答える