2

2つのプロジェクトがあります。最初のプロジェクトはdllプロジェクトで、2番目のプロジェクトはmvc4Webサイトです。dllには、DbContextを自動生成したエンティティデータモデルがあります。

Global.asaxで、次の行を使用してdbを初期化します。

System.Data.Entity.Database.SetInitializer( new DropCreateDatabaseAlways<WebConfigEntities>() );

サイトを開始すると、TypeLoadExceptionが発生します

Server Error in '/' Application.
GenericArguments[0], WebConfigDB.WebConfigEntities, voor System.Data.Entity.IDatabaseInitializer`1[TContext] is in strijd met de beperking van typeparameter TContext.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.TypeLoadException: GenericArguments[0], WebConfigDB.WebConfigEntities, voor System.Data.Entity.IDatabaseInitializer`1[TContext] is in strijd met de beperking van typeparameter TContext.

Source Error:

Line 46: 
Line 47:            BundleTable.Bundles.EnableDefaultBundles();
Line 48:        }
Line 49:    }
Line 50: }


Source File: D:\projecten\MD2400\WebConfig\Global.asax.cs    Line: 48

Stack Trace:

[TypeLoadException: GenericArguments[0], WebConfigDB.WebConfigEntities, voor System.Data.Entity.IDatabaseInitializer`1[TContext] is in strijd met de beperking van typeparameter TContext.]
   WebConfig.MvcApplication.Application_Start() in D:\projecten\MD2400\WebConfig\Global.asax.cs:48

どうすればこの問題を解決できますか?

4

3 に答える 3

6

このタイプのエラーは通常、さまざまなアセンブリが何らかの形でEntityFramework.dllのさまざまなバージョンを参照していることを示しています。すべてのプロジェクト(およびその他の参照アセンブリ)がまったく同じバージョンを使用していることを確認してください。また、GACにEntityFramework.dllがないことを確認してください。または、GACにEntityFramework.dllが必要な場合は、参照されているバージョンと同じである必要があります。

別のバージョンに対して構築された外部依存関係を使用していて、これを変更できない場合は、CLRがバージョンを適切に解決するように、バインディングリダイレクトを設定する必要があります。

于 2012-06-01T15:23:56.407 に答える
0

例外の翻訳が役立ちます。ジェネリックメソッド呼び出しでコンテキストを指定することは役に立ちますか?このような:

System.Data.Entity.Database.SetInitializer<WebConfigEntities>( new DropCreateDatabaseAlways<WebConfigEntities>() );

connectionStringをWebConfigEntitiesクラスにどのように渡しますか?コンストラクターを投稿してもらえますか?

EntityFrameworkは、.configファイルからconnectionStringを取得するための魔法を実行します。別のdllにモデルがある場合は、うまく機能しない可能性があります。もちろん、dllにモデルを含めることができないという意味ではありません。私はいくつかのプロジェクトでそれを行いました。

于 2012-06-01T12:52:46.803 に答える
0

nugetパッケージのバージョンではなく、EFdllのソリューションエクスプローラーからバージョン番号を取得するのを間違えました。そこで、6.2.0ではなくnugetパッケージバージョン6.0.0をロードしました。

これらのバージョンは同じものではないことに注意してください

于 2020-06-08T17:23:39.117 に答える