2016-06-13 11 views
1

データベーステーブルにアクセスするためにEntity Framework 6.13を使用するいくつかの既存のWindowsコンソールアプリケーションがあります。データベーステーブルに新しい列を追加したいと思います。新しい列がテーブルの最後に追加されると、既存のコンソールアプリケーションが失敗しますか?既存の列名や属性は変更しません。私はテーブルの列の順序を変更することはありません。データベーステーブルの最後に列を追加する予定です。Entity Framework v6.13 - テーブルに新しい列を追加する

Entity Frameworkモデル(新しい列なしでテーブルにアクセスした)を使用している既存の本番コンソールアプリケーションは、変更のために失敗しますか?

答えて

2

いいえ、既存のデータベーステーブルに新しい列を追加しても、既存のコンソールアプリケーションは失敗しません。これは、コンソールアプリケーションのEntity Framework構成で、データベース側に追加された新しく追加された列が認識されないためです。

EF Fluent APIは、ご使用のコンフィグレーションに従ってドメインモデルをデータベーステーブルと常にマッピングしようとします。マッピングされたシステムでは、エラーは発生せずに実行されます。したがって、ここではExisting Database Tableカラムには触れておらず、新しいカラムだけを追加しています。したがって、EF Fluent APIは、既存のデータベースをコンソールアプリケーションのドメインモデルと正常にマッピングし、コンソールアプリケーションを正常に実行できます。

注:新しく追加された列にNOT NULL、PRIMARY KEYなどの制約はありません。

0

これは、アプリケーションでデータベースをどのように初期化するかによって異なります。 EFはDbContextの初期化を比較し、データベーススキーマがDbContextのモデルと異なる場合、デフォルトでエラーを生成します。異なる初期化戦略を使用して動作をカスタマイズできます。

0

データベースに列を追加しても、列に制約がないと仮定してEntity Frameworkモデルでエラーが発生することはありません。 EFによって作成されたレコードは、列がNULLに設定され、更新が行われても列の値は変更されません。

EFは列を認識せず、後で移行を行うか、dropCreate(モデル変更時/常に)初期化戦略を使用すると失われる可能性があることに注意してください。

また、データベース内の列の順序はエンティティフレームワークに影響しません。

関連する問題