8

最近、Entity Framework を使用する WFC プロジェクトを v4.3.1 から 5.0 にアップグレードしました。
コード化された移行のみを実行しています (自動移行はありません)。

以前は、公開プロファイルを使用してこのソリューションを展開し、移行を適用していました。プロジェクトを EF5 にアップグレードしてから、移行部分が機能しなくなり、発行ダイアログはコンテキストがコード ファーストの移行であることを検出しません。

具体的には、.pubxmlファイルが変更され、コンテキスト<Object Type="DbCodeFirst">に対して<Object type="DbDacFx">どちらが正しくないかをコンテキストが検出されなくなりました。

回避策として、web.config 変換にデータベース初期化子の構成を手動で追加しました<entityFramework>が、発行プロファイルが機能しない理由を知りたいです。それははるかに優れたソリューションでした。

4

4 に答える 4

2

別の開発者のコ​​ミットをマージし、Visual Studio プロジェクトのリロードをトリガーしたときに、かつて私に起こりました。それが「DbCodeFirst」から「DbDacFx」への変更の原因です。

Visual Studio を再起動すると、すべてが本来あるべき状態に戻ります。

ちょうど別の考え。

于 2016-03-12T08:02:24.257 に答える
0

同じ問題がありましたが、同じコンテキストではありませんでした。

EF 6.1.3 を使用する既存の ASP.NET MVC 5.2.3 アプリケーションで Code First Migrations を 1 か月間問題なく使用していました。ある時点で、Windows Azure ストレージのサポートを追加しましたが、いくつか間違いを犯しました。

  • 新しいプロジェクトを追加しました。残念ながら、「クラス ライブラリ」ではなく「コンソール アプリケーション」を選択しました。「プロジェクト設定」で「クラスライブラリ」に戻すことで修正しようとしました
  • Nuget を使用しましたInstall-Package WindowsAzure.Storageが、クラス ライブラリではなく MVC プロジェクトにインストールしました。Uninstall-PackageMVCプロジェクトで実行し、正しいプロジェクトにインストールすることで修正しようとしました
  • クラス ライブラリ内のクラスを「WorkOrderStorage」と呼びました
  • web.config の要素にconnectionString を追加し<connectionStrings>、web.release.config の変換を追加しました

私のプロジェクトは現在、一貫性のない状態にあると思います。Code First Migrations を忘れていることに気付きました (.pubxml ファイルへの変更を監視しました)。

  1. MVC プロジェクトと WorkOrderStorage クラスを含むライブラリの間に参照を配置したとき
  2. 既存のライブラリの 1 つに空の「WorkOrderStorage」クラスを作成したとき

最後に、このライブラリをクラスライブラリとしてゼロから正しく再作成することで修正しました(観察1のため)。また、クラスに WorkOrderRepository という名前を付けました (観察 2 のため)。

于 2015-09-13T20:43:30.710 に答える
0

EntityFramework への参照をプロジェクトに追加していない可能性があります。参照を追加するだけで、DbCodeFirst オプションを使用できるかどうかを制御できるはずです。

于 2013-01-11T06:52:21.323 に答える