2017-10-20 11 views
2

EntityFrameworkの自動移行を有効にすることは、主にプロダクションでは悪い考えです。EntityFrameworkの自動移行を無効にする理由

  1. 本当に無効にする必要はありますか?
  2. すべての環境(開発、リリース、プロダクション)で無効にする必要がありますか?
  3. 自動 の移行を置き換える代替展開プロセスについて説明できますか? OracleのSQLの観点から話す

おかげ ダニエル

+0

"私は言われました" - なぜあなたはその人に議論を求めなかったのですか? – Evk

+0

私は彼に尋ねたが、私は確信していない。だから私はこの質問をしています。私の質問に答えることができますか? –

+0

これは非常にオープンな質問ですが、ここではさまざまな要因があり、適切ではないかもしれません。要素の1つは展開ですかアプリケーションの継続的な展開がありますか? –

答えて

2

、必ずしも箱から出して動作しない特定の変更がありますので、移行コードが作成されたときに、いくつかの手動調整を行う必要があります。

以下を考慮してください。

必須の列が既存の表に追加されます。既存のデータを保持するために、生成された移行を変更して、NULL可能な列を作成し、初期値を割り当ててから、その列を無効化できないように編集します。

自動化された移行には(予期しない)副作用があり、これはOracleデータプロバイダではさらに悪いと思われますが、MS SQLにはいくつかの問題があります。

チームの開発では、複数の開発者がデータベースモデルを変更すると、競合する移行が懸念される可能性があります。

1

manual migrationをEntity Frameworkで実行するのは良い方法ではありません。

理由:

  • 速度問題:EFはモデルデータベースと異なっているかどうかを検出しようとすると、それが本当ならば、それを構築します。
  • DB上のデータを抑制する:誤ってモデルやdbsetを抑制すると、DataBaseのテーブル/データが破壊されます。運用環境では、AutomaticMigrationDataLossAllowedを使用することはあまり推奨されていません。これをfalseに設定すると、例外がスローされ、アクセシビリティの問題が発生する可能性があります。 (AutomaticMigrationDataLossAllowed on MSDN

Another good doc自動移行の主な用途は、コードファーストのためである

エンティティフレームワークの移行については、それがデータベースを構築するよりも、「コード」を生成するために開発者に対しにできるようです。モデルを作成して実行すると、Dbを作成し、モデルから除外したものを破棄したり、列を修正したりします。

+0

あなたの答えをありがとう、本当に役立ちます。私はしかし、質問があります。EFコードの最初の移行に関するJulie Lermanのpluralsightコースを見ていて、本番環境用のスクリプトに移行することを提案しましたが、理由は説明しません。あなたはこのことについてどう思いますか? –

+0

このコースはわかりませんが、私は彼女がSQLスクリプトとエンティティフレームワークの移行システムなしでデータベースを更新することを推奨していると思います。 – EchoZulu

関連する問題