1

Entity Framework 5.0 ベースのプロジェクトをコード ファーストからデータベース ファーストに移行する場合。標準の VS2012 ウィザードを使用して、データベースから edmx モデルを生成しますが、それ以外に追加の手順はありますか? コード ファースト モデルと migrations フォルダーを定義したすべてのクラスを削除する必要があると思います。これら 2 つ以外のクリーンアップ操作はありますか?

[編集]: 報告します。

したがって、実際の経験は、私の最初の期待とLadislavが言及したことの間にありました(彼が言ったように、正確な条件はコードに依存します)。私の場合、操作全体に約 15 ~ 20 分かかりました。

  • ブランチの作成 (万一の事態に備えて安全に!)
  • Code-first クラスとソースの削除 (差分参照のために VS2012 の外に移動しました)
  • データベースからの EDMX モデルの作成 (同じ名前空間などをウィザードに渡して、差異の程度を減らします)
  • コード ファースト クラスと自動生成された db-first クラスのクイック インスペクション。これは、最初のコード モデルで適切な名前を使用したため、ほとんど 1:1 でした。
  • 各エラーを 1 つずつコンパイルして修正する
  • 多くのエラーが、EF 5 の自動複数形と異なるフィールドの私自身の複数形によるものであることに気付きました。大文字と小文字を区別するクイック検索で 40 以上のエラーを修正 -> すべて置換
  • コンパイル後にすべてのテストを再実行します
  • フィーチャー ブランチをマージして戻します。

ありがとう

4

1 に答える 1

2

エンティティまたはコンテキストクラスに追加のロジックが含まれている場合、これは非常に複雑になる可能性があります。絶対です:

  • プロジェクトにEDMXモデルを追加し、エンティティクラスとコンテキストクラスを生成させます
  • 移行を削除する
  • 元のコンテキストクラスに追加のコードが含まれている場合は、その追加のコードのみを使用して、新しく生成されたコンテキストクラスと同じ名前、名前空間、およびアセンブリの部分クラスに変換する必要があります。
  • エンティティクラスのいずれかに追加のコードが含まれている場合は、コンテキストの場合と同じ手順に従う必要があります。
  • 追加のコードが実際に自動生成されたコードの内部から呼び出された場合は、コード生成テンプレートの変更や部分的なメソッドの使用など、他の変更を行う必要があります。
  • ブートストラッパーからデータベースの初期化または移行の実行を削除する必要があります
  • メタデータファイルを参照する新しい接続文字列を使用する必要があります

もう1つのより複雑なオプションは、自動生成機能を使用せず、古いコンテキストとエンティティクラスを使用することですが、そのような場合は、EDMXと手動で同期を維持する必要があります。

于 2012-10-10T09:33:29.853 に答える