7

この奇妙なことが起こっていることに気づいたかもしれませんが、おそらくバグですが、自分で何か不足している可能性があります。EntityFramework.SqlServerがWeb公開にデプロイされていません

MVC3プロジェクトとデータアクセス用のクラスライブラリ(Entity Frameworkモデルクラス、データコンテキストなど)の2つのプロジェクトを持つソリューションがあるとします。

クラスライブラリは、EntityFramework(EF6)とEntityFramework.SqlServerライブラリを参照しています。

そして、このクラスライブラリDALをMVCプロジェクトが参照しています。 DALライブラリは、アプリケーションの外部のいくつかのコードで使用される可能性があります。したがって、Webプロジェクトから切り離すことができます。

とにかく、MVC3プロジェクトを公開すると、EntityFramework.SqlServerアセンブリがpublish/binディレクトリにコピーされないことがあります。しかし、となります。EntityFramework dllは他のライブラリおよびクラスライブラリ自体とともに公開されています。

パブリッシャに必要なSqlServerドライバも公開する方法はありますか?

答えて

16

申し訳ありません.Google-fuを追加した後、コードが使用されていない場合でも、その欠落しているアセンブリへの参照を作成するのが回避策として表示されます。

.NET MVC 3 Deployment package missing references

そして、私が使用し、回避策データコンテキストのコンストラクタで簡単なテストラインを追加します:

bool instanceExists = System.Data.Entity.SqlServer.SqlProviderServices.Instance != null; 
+1

Content.ttファイルを意味しますか?あなたが変更を行うたびに上書きされませんか? – RichC

+1

なぜこれが起こっているのか分かりませんが、内部クラスを作成してこのステートメントをコンストラクタに入れて問題を修正しました。 – Lereveme

+0

@RichC、これはTTとは関係ありません。私はこれがCode-firstの修正であることを追加してください。 – Crypton

3

私は同じような状況がありました。私はNuGetを介して私のWebプロジェクトにEFをインストールしました(私はまだそれを使用せず、ライブラリを参照するだけです)、それが私の問題を解決します。

さらに、私はこの状況を他の解決策として再現することができません。新しいWebプロジェクトを作成し、新しいlibを参照しましたが、デプロイメントが動作します。

1

プロジェクトのパッケージファイルにエンティティフレームワークパッケージを追加します

関連する問題