基になるデータベースの変更後に、モデルの更新ウィザードを使用して Entity Data Model (EDM) を更新することができます。モデルの更新ウィザードで EDM を更新する際に注意すべき点が 2 つあります。
モデルの更新ウィザードでは、データベースの変更内容に基づいて EDM を更新するときに既存のストレージ モデルが上書きされます。つまり、ストレージ モデルに対して行ったカスタム変更は、更新されたモデルには反映されません。
モデルの更新ウィザードは、概念モデルとマッピングに対して追加の変更を加えるだけです。これは、データベースに新しいオブジェクトが追加される際に、モデルの更新ウィザードが、対応するエンティティ、アソシエーション、およびマッピングを概念モデルに追加することを意味します。ただし、データベースからオブジェクトが削除されても、モデルの更新ウィザードは対応するエンティティまたはアソシエーションを概念モデルから削除しません (対応するマッピングは削除されます)。
次の表で、データベース オブジェクトに変更を加えたときに、モデルの更新ウィザードによってどのように概念モデルが変更されるかについて説明します。
データベース オブジェクト | データベース内のオブジェクトへの変更 | データベースからの更新時に EDM に対して行われる変更 |
---|---|---|
テーブル/ビュー |
追加 |
新規の EntityType と対応するアソシエーションおよびマッピングが概念モデルに追加されます。 |
削除 |
テーブルまたはビューはストレージ モデルから削除されます。テーブルに対するマッピングはすべて削除されます。テーブルまたはビューに外部キー リレーションシップ用のキーを格納した列が 1 つ以上ある場合、対応するアソシエーションのマッピングは削除されます。 |
|
名前の変更 |
テーブルまたはビューの名前の変更を変更した場合に、概念モデルおよびマッピングに生じる影響は、変更前の名前でテーブルまたはビューを削除し、変更後の名前でテーブルまたはビューを追加した場合と同じです。 |
|
主キーの変更 |
テーブルまたはビューの主キーに列を追加すると、新しい主キーを参照する外部キー用にアソシエーションが追加されます。対応する新しいアソシエーションが概念モデルに追加されます。既存のアソシエーションについては、マップが解除されます。 主キーから列を削除する場合は、対応するエンティティ プロパティのキーの指定を削除する必要があります。 外部キーから列を削除する場合は、残りの End プロパティの間に新しいアソシエーションを作成する必要があります。 エンティティ プロパティとして存在していた列を主キーに追加する場合、そのエンティティ プロパティをエンティティ キーにする必要があります。プロパティの変更方法については、「スカラ プロパティを作成および変更する方法」を参照してください。 追加された主キーが以前に (エンティティ プロパティではなく) アソシエーションにマップされていた場合、対応する新しいエンティティ プロパティが作成されます。 |
|
列 |
追加 |
対応するエンティティは、一致するプロパティとマッピングで更新されます。対応する型が継承階層の一部である場合、階層のルートに最も近く、影響を受けるテーブルにマップされる EntityType のみが、一致するプロパティで更新されます。これにより、同じ階層に含まれる複数の子エンティティに対して同じプロパティが祖先として定義される状況を回避します。 |
削除 |
列に対するマッピングは削除されます。 |
|
名前の変更 |
列の名前を変更した場合に、概念モデルに生じる影響は、変更前の名前で列を削除し、変更後の名前で列を追加した場合と同じです。 |
|
定義の変更 |
概念モデルまたはマッピングに対する変更はありません。変更された列の型と、対応するエンティティ プロパティの型との互換性がない場合は、手動でモデルを更新する必要があります。プロパティの変更方法については、「スカラ プロパティを作成および変更する方法」を参照してください。 |
|
外部キー |
追加 |
必要なエンティティ型がすべて存在する場合は、新しいアソシエーションと必要なマッピングが概念モデルに追加されます。 |
削除 |
概念モデルまたはマッピングに対する変更はありません。 |
|
名前の変更 |
概念モデルまたはマッピングに対する変更はありません。 |
|
ストアド プロシージャ |
追加 |
概念モデルまたはマッピングに対する変更はありません。ストアド プロシージャは、Function Import として手動で概念モデルに追加できます。詳細については、「ストアド プロシージャをインポートする方法」を参照してください。 |
削除 |
ストアド プロシージャに対するマッピングは削除されます。Function Import がストアド プロシージャにマップされていた場合、Function Import を削除するか、別のストアド プロシージャにマップする必要があります。エンティティ型の挿入、更新、または削除の動作がストアド プロシージャにマップされていた場合、マッピングは削除されます。 |
|
名前の変更 |
Function Import、またはエンティティ型の挿入、更新、削除の動作がストアド プロシージャにマップされていた場合、マッピングは削除されます。概念モデルに生じる影響は、変更前の名前でストアド プロシージャを削除し、変更後の名前でストアド プロシージャを追加した場合と同じです。名前が変更されたストアド プロシージャに対して新しい Function Import を作成するか、元の Function Import を名前変更後のストアド プロシージャに再マップする必要があります。 |
|
定義の変更 |
ストアド プロシージャに対してパラメータの追加または削除を行うと、ストアド プロシージャへのマッピングはすべて無効になります。Function Import がストアド プロシージャにマップされていた場合、Function Import を削除するか再作成する必要があります。エンティティ型の挿入、更新、または削除の動作がストアド プロシージャにマップされていた場合、動作を再マップする必要があります。 |