まず、問題を理解するために知っておくべきことは、EDMXファイルは 3 つの異なるセクションを含む単なる XML ファイルであることです。
CSDL
: 概念スキーマ定義言語
SSDL
: ストアスキーマ定義言語
MSL
: マッピング仕様言語
にはCSDL
、概念モデルを構成するエンティティと関係が含まれています。はSSDL
DB モデルを記述し、MSL
は 2 間のマッピングです。
「DB からモデルを更新」プロセスは更新します(現在の DB スキーマと矛盾するものはすべて変更します)。DB スキーマに新しいものを追加した場合にSSDL
のみ変更されます。CSDL
概念スキーマは DB スキーマとは異なる場合があるため、これは非常に正常な動作です (ドメイン モデルを DB モデルとまったく同じように見せたい場合を除きます。これは明らかに OOP/DDD のベスト プラクティスとは思えません)。
関数のインポート メカニズムも同じように機能します。新しいストアド プロシージャをインポートするとすぐに、新しいFunctionImport
要素が に追加されますCSDL
。この新しい要素は、パラメータを含む SP を記述します。先ほど言ったように、更新ウィザードを実行すると、新しいものだけが追加されCSDL
ます。そのため、DB の SP パラメータを変更しても、概念モデルでは変更されません。
概念モデルを強制的に変更するには、EDMX を開き、モデル ブラウザーに移動して、関数のインポート エントリを展開します。
- すべてを更新したい場合は、関数を削除して再度インポートするだけです
- 入力パラメーターを変更する場合は、適切な関数を展開し、パラメーターを削除して関数を更新します
- 戻り型のみを更新する場合は、適切な関数を右クリックし、更新を選択して更新をクリックします